为什么unique_ptr有auto_ptr的重载?

时间:2014-09-27 09:05:04

标签: c++ c++11 unique-ptr auto-ptr

我遇到了编译器错误并发现了一些有趣的内容。出于某种原因,unique_ptrauto_ptr的重载,但我认为auto_ptr已被弃用:

/usr/local/include/c++/4.9.0/bits/unique_ptr.h:228:2: 
note:template<class _Up, class> 
std::unique_ptr<_Tp, _Dp>::unique_ptr(std::auto_ptr<_Up>&&)
  unique_ptr(auto_ptr<_Up>&& __u) noexcept;

/usr/local/include/c++/4.9.0/bits/unique_ptr.h:228:2: 
note: template argument deduction/substitution failed:
main.cpp:41:67: note:  mismatched types 'std::auto_ptr<T>' and 'char*'

这是因为与使用auto_ptr的代码向后兼容吗?

1 个答案:

答案 0 :(得分:2)

是的,它与auto_ptr互操作,不推荐使用(根据标准)

  

当前版本标准的规范性,但不保证   在未来的修订中成为标准的一部分。