VS2010和VS2012中关于智能指针的内存头之间的区别在哪里?

时间:2013-07-25 11:01:03

标签: c++ visual-studio-2012 c++11

VS2010和VS2012头文件版本之间的智能指针声明(shared_ptr,unique_ptr和weakptr)似乎有所不同。

据我了解,例如shared_ptr现在是(通过C ++ 11)std命名空间的一部分。对于兼容性问题,还是是tr1命名空间的一部分吗?如果是这样,这是如何实现的?

谢谢

1 个答案:

答案 0 :(得分:1)

在标题<memory>中,他们定义了tr1命名空间,如下所示:

namespace tr1 { // TR1 additions
using _STD allocate_shared;
using _STD bad_weak_ptr;
using _STD const_pointer_cast;
using _STD dynamic_pointer_cast;
using _STD enable_shared_from_this;
using _STD get_deleter;
using _STD make_shared;
using _STD shared_ptr;
using _STD static_pointer_cast;
using _STD swap;
using _STD weak_ptr;
}   // namespace tr1

_STD在yvals.h中定义为

#if defined(__cplusplus)
 #define _STD_BEGIN namespace std {
 #define _STD_END       }
 #define _STD   ::std::