반응형
[[semiregular]] concept 개요
copyable concept
과 default_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
반응형
'프로그래밍 언어 > C++' 카테고리의 다른 글
array-to-pointer conversion에 대해 (0) | 2024.02.24 |
---|---|
glvalue-to-prvalue conversion에 대해 (0) | 2024.02.23 |
standard conversion sequence (0) | 2024.02.19 |
reference type, binding, related type, compatible type (0) | 2024.02.14 |
포인터 타입 관련 용어: qualification-combined type, similar type (0) | 2024.02.12 |