본문 바로가기

프로그래밍 언어/C++

semiregular concept

반응형

[[semiregular]] concept 개요

copyable conceptdefault_initializable concept를 만족하면 semiregular concept를 만족한다.

 - [[copyable]] concept

     - T a(b);  // copy constructor
     - T a = b; // copy constructor
     - a = b;   // assignment

 - [[default_initializable]] concept

    - T a;       // default initialization    
    - T{};       // direct-list initialization
    - T();       // value initialization == [[std::constructible_from<T>]]
import std;

template<class T>
void is_check() {
    std::println("\nTYPE NAME: '{}'", typeid(T).name());
    std::println("copyable concept: {}", std::copyable<T>);
    std::println("default_initializable concept: {}", std::default_initializable<T>);
    std::println("semiregular concept: {}", std::semiregular<T>);
}

int main(int argc, char* argv[]) {
    is_check<int>();
    is_check<std::thread>();
    return 0;
}
[출력 결과]

TYPE NAME: 'int'
copyable concept: true
default_initializable concept: true
semiregular concept: true

TYPE NAME: 'class std::thread'
copyable concept: false
default_initializable concept: true
semiregular concept: false
반응형