当前位置:  开发笔记 > 编程语言 > 正文

将类型添加到std命名空间

如何解决《将类型添加到std命名空间》经验,为你挑选了3个好方法。

std命名空间添加类型是否可以接受.例如,我想要一个TCHAR友好的字符串,以下是可接受的吗?

#include 

namespace std
{
    typedef basic_string tstring;
}

或者我应该使用自己的命名空间?



1> Johannes Sch..:

只允许专业化.例如,您可以专门std::numeric_limits为您的类型.这当然必须在命名空间中发生std::.但是你的typedef不是一个特殊化,因此会导致未定义的行为.



2> Rob Walker..:

否......命名空间的一部分是防止升级时出现名称冲突.

如果您向std命名空间添加内容,那么如果他们决定添加具有相同名称的内容,那么您的代码可能会破坏库的下一个版本.


它也违反了标准,afaik.std命名空间是神圣的.(除了现有std函数的专业化):)

3> Lightness Ra..:

[C++11: 17.6.4.2.1/1]:如果C++程序将声明或定义添加到命名空间std或命名空间中的命名空间std,则除非另有说明,否则C++程序的行为是未定义的.只有当声明取决于用户定义的类型并且特化符合原始模板的标准库要求且未明确禁止时,程序才可以将任何标准库模板的模板特化添加到命名空间std.

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有