Espacios de nombres
Variantes
Acciones

std::is_swappable_with, std::is_swappable, std::is_nothrow_swappable_with, std::is_nothrow_swappable

De cppreference.com
< cpp‎ | types
 
 
Biblioteca de servicios
 
Apoyo de tipos
Propiedades de tipos
(C++11)
(C++11)
(C++14)
(C++11)
(C++11)(hasta C++20)
(C++11)(en desuso en C++20)
(C++11)
Constantes de rasgos de tipos
Metafunciones
(C++17)
Contexto de evaluación constante
Operaciones soportadas
is_swappable_withis_swappableis_nothrow_swappable_withis_nothrow_swappable
(C++17)(C++17)(C++17)(C++17)
Relaciones y consultas de propiedades
Modificaciones de tipos
Transformaciones de tipos
(C++11)
(C++11)
(C++17)
(C++11)(hasta C++20)(C++17)
 
Definido en el archivo de encabezado <type_traits>
template<class T, class U >
struct is_swappable_with;
(1) (desde C++17)
template<class T >
struct is_swappable;
(2) (desde C++17)
template<class T, class U >
struct is_nothrow_swappable_with;
(3) (desde C++17)
template<class T >
struct is_nothrow_swappable;
(4) (desde C++17)
1) Si las expresiones swap(std::declval<T>(), std::declval<U>()) y swap(std::declval<U>(), std::declval<T>()) están bien formadas en un contexto no evaluado después de usingstd::swap; (véase Swappable), proporciona la constante miembro value igual a true. De lo contrario, value es false. Se realizan comprobaciones de acceso como si fuera desde un contexto no relacionado con ninguno de los tipos.
2) Si T no es un tipo referencial (por ejemplo, posiblemente calificado-cv void o un tipo función con un secuencia-de-calificadores-cv o un calificador-ref), proporciona una constante miembro value igual a false. De lo contrario, proporciona una constante miembro value igual a std::is_swappable_with<T&, T&>::value.
3) Lo mismo que (1), pero las evaluaciones de ambas expresiones de (1) se conocen y no lanzan excepciones.
4) Lo mismo que (2), pero utiliza a is_nothrow_swappable_with.

T y U deberá cada uno ser un tipo completo, (posiblemente calificado-cv) void, o un array de límite desconocido. De lo contrario, el comportamiento está indefinido.

Si la instanciación de una plantilla anterior depende, directa o indirectamente, de un tipo incompleto, y esa instanciación podría generar un resultado distinto si ese tipo hipotéticamente se completara, el comportamiento está indefinido.

El comportamiento de un programa que añade especializaciones para cualquiera de las plantillas definidas en esta página no está definido.

Contenido

[editar]Plantillas de variable auxiliares

template<class T, class U>
inlineconstexprbool is_swappable_with_v = is_swappable_with<T, U>::value;
(desde C++17)
template<class T>
inlineconstexprbool is_swappable_v = is_swappable<T>::value;
(desde C++17)
template<class T, class U>
inlineconstexprbool is_nothrow_swappable_with_v = is_nothrow_swappable_with<T, U>::value;
(desde C++17)
template<class T>
inlineconstexprbool is_nothrow_swappable_v = is_nothrow_swappable<T>::value;
(desde C++17)

Heredado de std::integral_constant

Constantes miembro

value
[estático]
true si T es intercambiable con U , de lo contrario false.
(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_typebool
typestd::integral_constant<bool, value>

[editar]Notas

Este rasgo no comprueba nada fuera del contexto inmediato de las expresiones de intercambio: si el uso de T o U activara especializaciones de plantilla, generación de funciones miembro especiales implícitamente definidas, etc., y tuvieran errores, el intercambio actual podría no compilar incluso si std::is_swappable_with<T,U>::value compila y se evalúa a true.

[editar]Ejemplo

[editar]Véase también

Intercambia los valores de dos objetos
(plantilla de función)[editar]
Comprueba si un tipo tiene un operador de asignación de movimiento
Original:
checks if a type has a move assignment operator
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(plantilla de clase)[editar]
close