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.
Contenidos |
Plantilla de variable auxiliar
|
template
<
class
T,
class
U
>
inline
constexpr
bool
reference_converts_from_temporary_v
=
|
(desde C++23) | |
Heredado de std:: integral_constant
Constantes miembro
|
value
[static]
|
true
si
T
es un tipo referencia, un valor
U
puede enlazarse a
T
en inicialización por copia, y un objeto temporal se enlazaría a la referencia,
false
en caso contrario
(constante miembro pública estática) |
Funciones miembro
|
operator bool
|
convierte el objeto a
bool
, devuelve
value
(función miembro pública) |
|
operator()
(C++14)
|
devuelve
value
(función miembro pública) |
Tipos miembro
| Tipo | Definición |
value_type
|
bool |
type
|
std:: integral_constant < bool , value > |
Notas
std::reference_converts_from_temporary
puede utilizarse para rechazar algunos casos que siempre producen referencias colgantes.
Ejemplo
#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
|
(C++11)
(C++20)
|
verifica si un tipo puede convertirse a otro tipo
(plantilla de clase) |
|
(C++17)
(C++23)
|
invoca cualquier objeto
Callable
con los argumentos dados
y posibilidad de especificar el tipo de retorno
(desde C++23)
(plantilla de función) |
|
(C++11)
|
vincula uno o más argumentos a un objeto función
(plantilla de función) |
|
(C++17)
|
llama al funtor proporcionado con los argumentos contenidos en una o más
variant
s
(plantilla de función) |
construye una nueva instancia de
std::function
(función miembro pública de
std::function<R(Args...)>
)
|
|
construye un nuevo objeto
std::move_only_function
(función miembro pública de
std::move_only_function
)
|
|
|
construye el objeto tarea
(función miembro pública de
std::packaged_task<R(Args...)>
)
|