【发布时间】:2016-09-15 02:54:26
【问题描述】:
std::reference_wrapper 不是默认可构造的。所以我什么都写不出来:
std::vector<std::reference_wrapper<int>> vec(10);
std::array<std::reference_wrapper<int>, 3> arr;
但是,令我惊讶的是,您可以调用std::reference_wrapper 对象向量的std::vector::reserve 成员函数并有效地更改其容量。
std::vector<std::reference_wrapper<int>> vec;
vec.reserve(10);
std::reference_wrapper 没有默认构造函数,这怎么可能?
【问题讨论】:
-
reserve()不创建对象。如果你改用resize()怎么办? -
您在问题中写的内容几乎与您的问题无关......
-
@Barry 随时编辑...
-
@Barry 或提出改进建议...
-
@101010 当然可以。你的问题是真的:为什么我可以
reserve一个vector<reference_wrapper<T>>。第一部分是关于参考的,但您没有任何参考。第二部分解释了reference_wrapper是什么 - 但这也不是真正相关的,因为您的问题对于保留struct foo { foo(int ) };的向量同样有效
标签: c++ c++11 vector c++14 reference-wrapper