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
Défini dans l'en-tête <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 les expressions ranges:: swap ( std:: declval < T > ( ) , std:: declval < U > ( ) ) et ranges:: swap ( std:: declval < U > ( ) , std:: declval < T > ( ) ) sont toutes deux bien formées lorsqu'elles sont traitées comme des opérandes non évaluées, fournit la constante membre value égale à true . Sinon, value est false . Les vérifications d'accès sont effectuées comme depuis un contexte sans relation avec l'un ou l'autre type.
2) Si T n'est pas un type référençable (c'est-à-dire, potentiellement qualifié cv void ou un type de fonction avec une cv-qualifier-seq ou un ref-qualifier ), fournit une constante membre value égale à false . Sinon, fournit une constante membre value égale à ranges :: is_swappable_with < T & , T & > :: value .
3) Identique à (1) , mais les évaluations des deux expressions de (1) sont connues pour ne pas lever d'exceptions.
4) Identique à (2) , mais utilise is_nothrow_swappable_with .

T et U doivent chacun être un type complet, (éventuellement qualifié cv) void , ou un tableau de limite inconnue. Sinon, le comportement est indéfini.

Table des matières

Modèles de variables auxiliaires

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)

Hérité de std:: integral_constant

Constantes membres

value
[static]
true si T est échangeable avec U , false sinon
(constante membre publique statique)

Fonctions membres

operator bool
convertit l'objet en bool , retourne value
(fonction membre publique)
operator()
(C++14)
retourne value
(fonction membre publique)

Types membres

Type Définition
value_type bool
type std:: integral_constant < bool , value >

Notes

Ce trait ne vérifie rien en dehors du contexte immédiat des expressions d'échange : si l'utilisation de T ou U déclenchait des spécialisations de templates, la génération de fonctions membres spéciales implicitement définies, etc., et que celles-ci contiennent des erreurs, l'échange réel pourrait ne pas compiler même si ranges::is_swappable_with<T,U>::value compile et s'évalue à true .

Exemple

Voir aussi

spécifie qu'un type peut être échangé ou que deux types peuvent être échangés l'un avec l'autre
(concept)
vérifie si les objets d'un type peuvent être échangés avec des objets du même type ou d'un type différent
(modèle de classe)