AMA*_*AMA 6 c++ boost tr1 std undefined-behavior
一些背景:
扩展namespace std是未定义的行为(UB),除非它是模板特化[ 1 ]:
将声明或定义添加到命名空间std或嵌套在std中的任何命名空间是未定义的行为,下面列出了一些例外情况
我们boost::tr1在没有tr1支持的平台上使用(例如,WinCE,WM).Boost就是这样做的:将自己的实现注入std::tr1if tr1中.
namespace std{ namespace tr1{
using ::boost::bad_weak_ptr;
using ::boost::shared_ptr;
...
} }
Run Code Online (Sandbox Code Playgroud)
我的问题是:
这是否意味着如果boost::tr1与非tr1编译器一起使用它是UB ?
或者,std只要开发人员确保反向移植的功能不可用,是否可以注入反向移动?
如果它是好的,可以在一个把它一步,注入boost::tr1到std代替std::tr1?
| 归档时间: |
|
| 查看次数: |
118 次 |
| 最近记录: |