Namespaces
Variants

std:: regular

From cppreference.net
헤더에 정의됨 <concepts>
template < class T >
concept regular = std:: semiregular < T > && std:: equality_comparable < T > ;
(C++20부터)

regular 개념은 타입이 regular 함을 명시합니다. 즉, 복사 가능하고, 기본 생성 가능하며, 동등 비교 가능한 타입을 의미합니다. 이는 int 와 같은 내장 타입과 유사하게 동작하며, == 로 비교 가능한 타입들이 이 개념을 만족합니다.

예제

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

출력:

Equal
4 4

참조문헌

  • C++23 표준 (ISO/IEC 14882:2024):
  • 18.6 객체 개념 [concepts.object]
  • C++20 표준 (ISO/IEC 14882:2020):
  • 18.6 객체 개념 [concepts.object]

참고 항목

해당 타입의 객체가 복사, 이동, 교환 및 기본 생성될 수 있음을 명시
(concept)