Namespaces
Variants

std::experimental::ranges:: is_swappable_with, std::experimental::ranges:: is_swappable, std::experimental::ranges:: is_nothrow_swappable_with, std::experimental::ranges:: is_nothrow_swappable

From cppreference.net
Definido en el encabezado <experimental/ranges/type_traits>
template < class T, class U >
struct is_swappable_with ;
(1) (ranges TS)
template < class T >
struct is_swappable ;
(2) (ranges TS)
template < class T, class U >
struct is_nothrow_swappable_with ;
(3) (ranges TS)
template < class T >
struct is_nothrow_swappable ;
(4) (ranges TS)
1) Si las expresiones ranges:: swap ( std:: declval < T > ( ) , std:: declval < U > ( ) ) y ranges:: swap ( std:: declval < U > ( ) , std:: declval < T > ( ) ) están bien formadas cuando se tratan como operandos no evaluados, proporciona la constante miembro value igual a true . De lo contrario, value es false . Las comprobaciones de acceso se realizan como si fuera desde un contexto no relacionado con ninguno de los tipos.
2) Si T no es un tipo referenciable (es decir, posiblemente calificado cv void o un tipo de función con un cv-qualifier-seq o un ref-qualifier ), proporciona una constante miembro value igual a false . De lo contrario, proporciona una constante miembro value igual a ranges :: is_swappable_with < T & , T & > :: value .
3) Igual que (1) , pero se sabe que las evaluaciones de ambas expresiones de (1) no lanzan excepciones.
4) Igual que (2) , pero utiliza is_nothrow_swappable_with .

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

Contenidos

Plantillas de variables auxiliares

template < class T, class U >
constexpr bool is_swappable_with_v = is_swappable_with < T, U > :: value ;
(1) (ranges TS)
template < class T >
constexpr bool is_swappable_v = is_swappable < T > :: value ;
(2) (ranges TS)
template < class T, class U >
constexpr bool is_nothrow_swappable_with_v = is_nothrow_swappable_with < T, U > :: value ;
(3) (ranges TS)
template < class T >
constexpr bool is_nothrow_swappable_v = is_nothrow_swappable < T > :: value ;
(4) (ranges TS)

Heredado de std:: integral_constant

Constantes miembro

value
[static]
true si T es intercambiable con U , 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

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

Ejemplo

Véase también

especifica que un tipo puede ser intercambiado o que dos tipos pueden ser intercambiados entre sí
(concepto)
verifica si objetos de un tipo pueden ser intercambiados con objetos del mismo tipo o de diferente tipo
(plantilla de clase)