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);
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);
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特別なことは何もありません。最初に参照していたオブジェクトを参照し続けます。