【发布时间】:2013-05-03 20:02:02
【问题描述】:
将std::tr1::shared_ptr 用作std::shared_ptr 将using 指令放在相应的header 中是否合法且良好的编程风格?像这样:
namespace std
{
using tr1::shared_ptr;
}
我知道污染整个命名空间是不好的,但是这种情况呢?有没有隐藏的陷阱?目标编译器是VS2008,但也需要兼容更高版本。
【问题讨论】:
-
Later versions should also support
std::tr1。编译器不会删除整个命名空间;他们会将其中的内容复制到std,就像您尝试做的那样。所以将类型称为std::tr1::shared_ptr应该不会有很长时间的问题。 -
@cassini Praetorian 说了什么^ 如果你想走自己的路,你必须在预处理器中进行编译器检查,以确保你不会在 C++11 支持上遇到冲突,并且未来,编译器,它很混乱,不那么灵活,也不那么便携。
-
@leetNightshade 其实就是以上所有。诚然,遗憾的是没有“编译器支持功能 X”检查,但对于大多数目的来说,对 C++ 版本进行简单的预处理器检查就足够了。
标签: c++ visual-studio-2008 visual-c++ tr1