非初始化reference_wrapper的返回值

时间:2014-06-05 20:58:32

标签: c++ c++11 vector reference-wrapper

当我reference_wrapper下面的向量时,resize()指向何处?这是一个未定义的行为吗?我该怎么做才能安全?

std::vector < std::reference_wrapper <int> > vec;
vec.resize(10);

2 个答案:

答案 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对象会发生什么。没什么特别的,他们会继续提到他们最初提到的对象。

Live demo