-3

Where does reference_wrapper point to when I resize() the vector below? Is this an undefined behavior? What should I do for safety?

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 に答える