加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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后卫设置的.

>这有什么理由吗?
>在包含< functional>之前简单定义_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; }
};

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读