当我下面的向量reference_wrapper
指向哪里?resize()
这是未定义的行为吗?为了安全我应该怎么做?
std::vector < std::reference_wrapper <int> > vec;
vec.resize(10);
当我下面的向量reference_wrapper
指向哪里?resize()
这是未定义的行为吗?为了安全我应该怎么做?
std::vector < std::reference_wrapper <int> > vec;
vec.resize(10);
您的代码无法编译,因为reference_wrapper
没有默认构造函数。
error: no matching function for call to ‘std::reference_wrapper<int>::reference_wrapper()’
vector<T>::resize(size_type)
要求T
默认可构造,而reference_wrapper
不是,因此您的代码不会按原样编译。
但据推测,您是在询问当必要时重新分配存储reference_wrapper
时对象会发生什么。vector
没什么特别的,他们会继续引用他们最初引用的对象。