Namespaces
Variants

std:: regular

From cppreference.net
Défini dans l'en-tête <concepts>
template < class T >
concept regular = std:: semiregular < T > && std:: equality_comparable < T > ;
(depuis C++20)

Le concept regular spécifie qu'un type est régulier , c'est-à-dire qu'il est copiable, constructible par défaut et comparable par égalité. Il est satisfait par les types qui se comportent de manière similaire aux types intégrés comme int , et qui sont comparables avec == .

Exemple

#include <concepts>
#include <iostream>
template<std::regular T>
struct Single
{
    T value;
    friend bool operator==(const Single&, const Single&) = default;
};
int main()
{
    Single<int> myInt1{4};
    Single<int> myInt2;
    myInt2 = myInt1;
    if (myInt1 == myInt2)
        std::cout << "Equal\n";
    std::cout << myInt1.value << ' ' << myInt2.value << '\n';
}

Sortie :

Equal
4 4

Références

  • Norme C++23 (ISO/CEI 14882:2024) :
  • 18.6 Concepts d'objet [concepts.object]
  • Norme C++20 (ISO/CEI 14882:2020) :
  • 18.6 Concepts d'objet [concepts.object]

Voir aussi

spécifie qu'un objet d'un type peut être copié, déplacé, échangé et construit par défaut
(concept)