std:: common_comparison_category
|
Défini dans l'en-tête
<compare>
|
||
|
template
<
class
...
Ts
>
struct
common_comparison_category
|
(depuis C++20) | |
Le modèle de classe
std::common_comparison_category
fournit un alias (sous la forme du typedef membre
type
) pour la catégorie de comparaison la plus forte vers laquelle tous les arguments du modèle
Ts...
peuvent être convertis.
En détail, le type de comparaison commun d'une liste de n types
T
0
...
T
n-1
est défini comme suit :
-
Si un quelconque
Ti n'est pas un type de catégorie de comparaison ( std::partial_ordering , std::weak_ordering , std::strong_ordering ),Uest void . -
Sinon, si au moins un
Ti est std::partial_ordering ,Uest std::partial_ordering . -
Sinon, si au moins un
Ti est std::weak_ordering ,Uest std::weak_ordering . -
Sinon (si chaque
Ti est std::strong_ordering , ou si la liste est vide),Uest std::strong_ordering .
Table des matières |
Paramètres du modèle
| ...Ts | - | une liste éventuellement vide de types |
Modèle d'assistance
|
template
<
class
...
Ts
>
using common_comparison_category_t = common_comparison_category < Ts... > :: type ; |
(depuis C++20) | |
Types membres
| Type de membre | Définition |
type
|
la catégorie de comparaison commune la plus forte (telle que définie ci-dessus) |
Implémentation possible
namespace detail { template<unsigned int> struct common_cmpcat_base { using type = void; }; template<> struct common_cmpcat_base<0u> { using type = std::strong_ordering; }; template<> struct common_cmpcat_base<2u> { using type = std::partial_ordering; }; template<> struct common_cmpcat_base<4u> { using type = std::weak_ordering; }; template<> struct common_cmpcat_base<6u> { using type = std::partial_ordering; }; } // namespace detail template<class...Ts> struct common_comparison_category : detail::common_cmpcat_base<(0u | ... | (std::is_same_v<Ts, std::strong_ordering> ? 0u : std::is_same_v<Ts, std::weak_ordering> ? 4u : std::is_same_v<Ts, std::partial_ordering> ? 2u : 1u) )> {}; |
Exemple
|
Cette section est incomplète
Raison : aucun exemple |
Voir aussi
|
(C++20)
|
le type de résultat de comparaison à trois voies qui prend en charge les 6 opérateurs et est substituable
(classe) |
|
(C++20)
|
le type de résultat de comparaison à trois voies qui prend en charge les 6 opérateurs et n'est pas substituable
(classe) |
|
(C++20)
|
le type de résultat de comparaison à trois voies qui prend en charge les 6 opérateurs, n'est pas substituable et autorise des valeurs incomparables
(classe) |