-3

当我下面的向量reference_wrapper指向哪里?resize()这是未定义的行为吗?为了安全我应该怎么做?

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

2 回答 2

5

您的代码无法编译,因为reference_wrapper没有默认构造函数。

error: no matching function for call to ‘std::reference_wrapper<int>::reference_wrapper()’
于 2014-06-05T21:02:15.410 回答
1

vector<T>::resize(size_type)要求T默认可构造,而reference_wrapper不是,因此您的代码不会按原样编译。

但据推测,您是在询问当必要时重新分配存储reference_wrapper时对象会发生什么。vector没什么特别的,他们会继续引用他们最初引用的对象。

现场演示

于 2014-06-05T21:25:28.910 回答