当我reference_wrapper
下面的向量时,resize()
指向何处?这是一个未定义的行为吗?我该怎么做才能安全?
std::vector < std::reference_wrapper <int> > vec;
vec.resize(10);
答案 0 :(得分:5)
您的代码无法编译,因为reference_wrapper
没有默认构造函数。
error: no matching function for call to ‘std::reference_wrapper<int>::reference_wrapper()’
答案 1 :(得分:1)
vector<T>::resize(size_type)
要求T
默认是可构造的,而reference_wrapper
不是,所以您的代码不会按原样编译。
但据推测,当reference_wrapper
根据需要重新分配存储时,您会询问vector
对象会发生什么。没什么特别的,他们会继续提到他们最初提到的对象。