Возвращаемое значение неинициализированного reference_wrapper

Где же reference_wrapper указать, когда я resize() вектор ниже? Это неопределенное поведение? Что я должен сделать для безопасности?

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

-3

Решение

Ваш код не компилируется, потому что reference_wrapper не имеет конструктора по умолчанию.

error: no matching function for call to ‘std::reference_wrapper<int>::reference_wrapper()’
5

Другие решения

vector<T>::resize(size_type) требует, чтобы T быть конструируемым по умолчанию, и reference_wrapper нет, поэтому ваш код не компилируется как есть.

Но, по-видимому, вы спрашиваете, что происходит с reference_wrapper объекты, когда vector перераспределяет хранилище по мере необходимости. Ничего особенного, они будут продолжать ссылаться на объект, на который они первоначально ссылались.

Живая демо

1

По вопросам рекламы [email protected]