在尝试使用std::select1st
from <functional>
在 VS2008 项目中,我发现它被 ifdef 了_HAS_TRADITIONAL_STL
guard.
原因std::select1st
默认情况下不存在的原因是它不是 C++ 标准库的一部分。它是标准模板库 (STL) 中未采用 C++ 标准的部分之一。
我在 MSDN 上找不到任何文档_HAS_TRADITIONAL_STL
,并且它似乎没有在随 Visual Studio 2010 分发的标准库版本中使用。当 Dinkumware 将其交付给 Microsoft 时,它可能已包含在库中。
话虽如此,它是probably如果您想使用,可以安全地定义std::select1st
。请注意,使用该标志启用的任何内容都是特定于实现的且不可移植的(甚至可能在 Visual C++ 版本之间发生变化)。你最好自己实现select1st
功能:
template <typename PairT>
struct select1st : public std::unary_function<PairT, typename PairT::first_type>
{
typename PairT::first_type operator()(const PairT& a) { return a.first; }
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)