std::reference_wrapper<T>::reference_wrapper
De es.cppreference.net
template< class U >
reference_wrapper( U&& x ) noexcept(/*see below*/) ;
|
(1) | (desde C++11) (constexpr desde C++20) |
reference_wrapper( const reference_wrapper& other ) noexcept;
|
(2) | (desde C++11) (constexpr desde C++20) |
Construye un nuevo envoltorio de referencia.
1) Convierte
x a T& como si fuera por T& t = std::forward<U>(x);, luego almacena una referencia a t. Esta sobrecarga participa en la resolución de sobrecarga solo si typename std::decay<U>::type no es del mismo tipo que reference_wrapper y la expresión FUN(std::declval<U>()) está bien formada, donde FUN nombra al conjunto de funciones imaginarias
void FUN(T&) noexcept;
void FUN(T&&) = delete;
2) Constructor de copia. Almacena una referencia a
other.get().Parámetros
| x | - | un objeto a envolver |
| other | - | otro envoltorio de referencia |
Excepciones
1)
noexcept
especificación:
donde
noexcept
(
noexcept
(
FUN
(
std::
declval
<
U
>
(
)
)
)
)
FUN
es el conjunto de funciones imaginarias descritas en la descripción anterior.
Ejemplo
|
Esta sección está incompleta
Razón: sin ejemplo |
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 2993 | C++11 |
el constructor
reference_wrapper(T&&)
eliminado interfiere
con la resolución de sobrecarga en algunos casos |
reemplazado con una plantilla de constructor |