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