我正在阅读有关 boost 智能指针的内容,我无法理解的一件事是为什么 boost::scoped_ptr 不能与 STL 容器一起使用?我读过它是不可复制的,但这到底是什么意思,为什么 STL 需要它?
最佳答案
一些容器操作,比如std::vector
的构造函数
vector(size_type n, const T& value, const Allocator& = Allocator());
或std::vector::resize
, 要求 T
是CopyInsertable
.这要求 vector 能够调用 T
的复制构造函数。所以你不能构造一个 std::vector<boost::scoped_ptr<U>>
使用此构造函数。
C++11之前,对T
的要求更严格。自最新标准以来,要求是针对每个容器操作量身定制的,而不是针对整个容器。所以可能有很多情况你可以使用 boost::scoped_ptrs
的 vector 。 .
关于c++ - boost::scoped_ptr 和 C++ 中的 STL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16757183/