std::reference_wrapper<T>::reference_wrapper
С сайта ru.cppreference.net
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&&)
мешает
разрешению перегрузки в некоторых случаях |
заменен на конструктор-шаблон |