std:: reference_converts_from_temporary
|
Definido en el encabezado
<type_traits>
|
||
|
template
<
class
T,
class
U
>
struct reference_converts_from_temporary ; |
(desde C++23) | |
Sea
V
igual a
std::
remove_cv_t
<
U
>
si
U
es un tipo escalar o
cv
void
, o
U
en caso contrario. Si
T
es un tipo referencia, y dada una expresión hipotética
e
tal que
decltype
(
e
)
es
V
, la definición de variable
T ref
=
e
;
está bien formada y
vincula un objeto temporal
a
ref
, entonces proporciona la constante miembro
value
igual a
true
. De lo contrario,
value
es
false
.
Si
T
es un tipo de referencia lvalue a un tipo de objeto calificado const pero no volatile o un tipo de referencia rvalue, tanto
std::
remove_reference_t
<
T
>
como
std::
remove_reference_t
<
U
>
deberán ser
tipos completos
,
cv
void
, o
arrays de límite desconocido
; de lo contrario el comportamiento es indefinido.
Si una instanciación de una plantilla anterior depende, directa o indirectamente, de un tipo incompleto, y esa instanciación podría producir un resultado diferente si ese tipo se completara hipotéticamente, el comportamiento no está definido.
Si el programa añade especializaciones para
std::reference_converts_from_temporary
o
std::reference_converts_from_temporary_v
, el comportamiento es indefinido.
ContenidoPlantilla de variable auxiliar
Heredado de std:: integral_constantConstantes miembro
Funciones miembro
Tipos miembro
Notas
Ejemplo
Ejecutar este código
#include <type_traits> int main() {} static_assert( std::reference_converts_from_temporary_v<int&&, int> == true && std::reference_converts_from_temporary_v<const int&, int> == true && std::reference_converts_from_temporary_v<int&&, int&&> == false && std::reference_converts_from_temporary_v<const int&, int&&> == false && std::reference_converts_from_temporary_v<int&&, long&&> == true && std::reference_converts_from_temporary_v<int&&, long> == true); Véase también
|