c – 定义_HAS_TRADITIONAL_STL以启用STL功能是否安全?
发布时间:2020-12-16 09:26:54 所属栏目:百科 来源:网络整理
导读:试图从 functional中使用std :: select1st在一个VS2008项目中,我发现它是由_HAS_TRADITIONAL_STL后卫设置的. 这有什么理由吗? 在包含 functional之前简单定义_HAS_TRADITIONAL_STL是否安全? 解决方法 std :: select1st默认不存在的原因是它不是C标准库的一
试图从< functional>中使用std :: select1st在一个VS2008项目中,我发现它是由_HAS_TRADITIONAL_STL后卫设置的.
>这有什么理由吗? 解决方法
std :: select1st默认不存在的原因是它不是C标准库的一部分.它是标准模板库(STL)中未被C标准采用的部分之一.
我在MSDN上找不到_HAS_TRADITIONAL_STL的任何文档,并且它似乎没有在随Visual Studio 2010一起发布的标准库的版本中使用.它可能由Dinkumware在将它提供给Microsoft时包含在库中. 话虽如此,定义是否要使用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; } }; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |