Namespaces
Variants

std:: regular

From cppreference.net
Definido en el encabezado <concepts>
template < class T >
concept regular = std:: semiregular < T > && std:: equality_comparable < T > ;
(desde C++20)

El concepto regular especifica que un tipo es regular , es decir, es copiable, construible por defecto y comparable mediante igualdad. Es satisfecho por tipos que se comportan de manera similar a tipos incorporados como int , y que son comparables con == .

Ejemplo

#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';
}

Salida:

Equal
4 4

Referencias

  • Estándar C++23 (ISO/IEC 14882:2024):
  • 18.6 Conceptos de objeto [concepts.object]
  • Estándar C++20 (ISO/IEC 14882:2020):
  • 18.6 Conceptos de objeto [concepts.object]

Véase también

especifica que un objeto de un tipo puede ser copiado, movido, intercambiado y construido por defecto
(concept)