Namespaces
Variants

std::reference_wrapper<T>::reference_wrapper

С сайта ru.cppreference.net
 
 
Библиотека утилит
Поддержка языка
Поддержка типов (основные типы, RTTI)
Макросы для проверки возможностей библиотеки (C++20)
Программные утилиты
Функции с переменным числом аргументов
Поддержка корутин (C++20)
Поддержка контрактов (C++26)
Трёхстороннее сравнение
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Общие утилиты
Операторы отношений (устарело в C++20)
Функции сравнения целых чисел
(C++20)(C++20)(C++20)    
(C++20)
Обмен и операции с типами
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Общеупотребительные типы-словари
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
Функциональные объекты
Вызов функции
(C++17)(C++23)
Тождественный функциональный объект
(C++20)
Старые связыватели и адапторы
(до C++17*)
(до C++17*)
(до C++17*)
(до C++17*)
(до C++17*)(до C++17*)(до C++17*)(до C++17*)
(до C++20*)
(до C++20*)
(до C++17*)(до C++17*)
(до C++17*)(до C++17*)

(до C++17*)
(до C++17*)(до C++17*)(до C++17*)(до C++17*)
(до C++20*)
(до C++20*)
 
 
template< class U >
reference_wrapper( U&& x ) noexcept(/*see below*/) ;
(1) (начиная с C++11)
(constexpr начиная с C++20)
reference_wrapper( const reference_wrapper& other ) noexcept;
(2) (начиная с C++11)
(constexpr начиная с C++20)

Создаёт новую обёртку ссылки.

1) Преобразует x в T& как бы с помощью T& t = std::forward<U>(x);, затем сохраняет ссылку на t. Эта перегрузка участвует в разрешении перегрузки только если typename std::decay<U>::type не является тем же типом, что reference_wrapper и выражение FUN(std::declval<U>()) является корректным, где FUN именует набор воображаемых функций
void FUN(T&) noexcept;
void FUN(T&&) = delete;
2) Конструктор копирования. Сохраняет ссылку на other.get().

Параметры

x - объект для обёртки
other - другой ссылочный враппер

Исключения

1)
noexcept спецификация:
noexcept ( noexcept ( FUN ( std:: declval < U > ( ) ) ) )
где FUN - это набор воображаемых функций, описанных в приведенном выше описании.

Пример

Отчеты о дефектах

Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Applied to Behavior as published Correct behavior
LWG 2993 C++11 удаленный конструктор reference_wrapper(T&&) мешает
разрешению перегрузки в некоторых случаях
заменен на конструктор-шаблон