C++ 为什么不可能调整线程特定指针向量的大小?

C++ 为什么不可能调整线程特定指针向量的大小?,c++,boost-thread,C++,Boost Thread,以下几点效果不错: std::vector<boost::thread_specific_ptr<std::unordered_map<int, int>>> v(1); 而以下操作将导致编译错误: std::vector<boost::thread_specific_ptr<std::unordered_map<int, int>>> v; v.resize(1); 为什么会这样?boost::thread_speci

以下几点效果不错:

std::vector<boost::thread_specific_ptr<std::unordered_map<int, int>>> v(1);
而以下操作将导致编译错误:

std::vector<boost::thread_specific_ptr<std::unordered_map<int, int>>> v;
v.resize(1);

为什么会这样?

boost::thread_specific_ptr是不可复制的。让我看看我是否理解正确。在第二种情况下,resize调用线程特定的默认构造函数,然后调用复制构造函数n次以填充向量。由于特定于线程的ptr是不可复制的,所以我得到了编译错误。这是正确的吗?但第一种情况下不也是这样吗?@paulbaltessu“但第一种情况下不也是这样吗?”不,第一种情况并不意味着抄袭,而第二种情况可能会这样。对我来说,这就是答案,先生们。