Где же reference_wrapper
указать, когда я resize()
вектор ниже? Это неопределенное поведение? Что я должен сделать для безопасности?
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
перераспределяет хранилище по мере необходимости. Ничего особенного, они будут продолжать ссылаться на объект, на который они первоначально ссылались.