<type_traits>
형식 인수의 속성에 대한 정보를 제공하거나 변환된 형식을 생성하는 컴파일 시간 상수에 대한 템플릿을 정의합니다.
구문
#include <type_traits>
설명
type_traits> 클래스 및 템플릿<은 컴파일 시간에 형식 유추, 분류 및 변환을 지원하는 데 사용됩니다. 또한 형식 관련 오류를 검색하고 제네릭 코드를 최적화하는 데에도 사용됩니다. 단항 형식 특성은 형식의 속성을 설명하고, 이진 형식 특성은 형식 간의 관계를 설명하고, 변환 특성은 형식의 속성을 수정합니다.
도우미 클래스 integral_constant
및 해당 템플릿 특수화 및 true_type
false_type
형식 조건자에 대한 기본 클래스를 형성합니다. 형식 조건자는 형식 인수를 하나 이상 사용하는 템플릿입니다. 형식 조건자가 true인 경우 true_type 직접 또는 간접적으로 공개적으로 파생됩니다. 형식 조건자가 false인 경우 false_type 직접 또는 간접적으로 공개적으로 파생됩니다.
형식 한정자 또는 변환 특성은 템플릿 인수를 하나 이상 사용하며 수정된 형식과 동일한 의미인 단일 구성원(type
)를 포함하는 템플릿입니다.
별칭 템플릿
형식 특성 식을 간소화하기 위해 typename some_trait<T>::type
별칭 템플릿이 제공됩니다. 여기서 some_trait 클래스 템플릿 이름입니다. 예를 들어 add_const에는 다음과 같이 정의된 add_const_t
형식에 대한 별칭 템플릿이 있습니다.
template <class T>
using add_const_t = typename add_const<T>::type;
멤버에 대해 type
제공된 별칭은 다음과 같습니다.
add_const_t
add_cv_t
add_lvalue_reference_t
add_pointer_t
add_rvalue_reference_t
add_volatile_t
aligned_storage_t
aligned_union_t
\
common_type_t
conditional_t
decay_t
enable_if_t
invoke_result_t
make_signed_t
make_unsigned_t
remove_all_extents_t
\
remove_const_t
remove_cv_t
remove_extent_t
remove_pointer_t
remove_reference_t
remove_volatile_t
result_of_t
underlying_type_t
\
클래스
도우미 클래스 및 형식 정의
속성 | 설명 |
---|---|
integral_constant | 형식 및 값에서 정수 계열 상수를 만듭니다. |
true_type | 값이 true인 정수 상수를 보관합니다. |
false_type | 값이 false인 정수 상수를 보관합니다. |
기본 형식 범주
속성 | 설명 |
---|---|
is_void | 형식이 void 인지 테스트합니다. |
is_null_pointer | 형식이 std::nullptr_t 인지 테스트합니다. |
is_integral | 형식이 정수인지 테스트합니다. |
is_floating_point | 형식이 부동 소수점인지 테스트합니다. |
is_array | 형식이 배열형인지 테스트합니다. |
is_pointer | 형식이 포인터인지 테스트합니다. |
is_lvalue_reference | 형식이 lvalue 참조인지 여부를 테스트합니다. |
is_rvalue_reference | 형식이 rvalue 참조인지 테스트합니다. |
is_member_object_pointer | 형식이 멤버 개체에 대한 포인터인지 테스트합니다. |
is_member_function_pointer | 형식이 멤버 함수에 대한 포인터인지 테스트합니다. |
is_enum | 형식이 열거형인지 테스트합니다. |
is_union | 형식이 공용 구조체인지 테스트합니다. |
is_class | 형식이 클래스인지 테스트합니다. |
is_function | 형식이 함수 형식인지 테스트합니다. |
복합 형식 범주
속성 | 설명 |
---|---|
is_reference | 형식이 참조인지 테스트합니다. |
is_arithmetic | 형식이 산술형인지 테스트합니다. |
is_fundamental | 형식이 void 또는 산술형인지 테스트합니다. |
is_object | 형식이 개체 형식인지 테스트합니다. |
is_scalar | 형식이 스칼라 형식인지 테스트합니다. |
is_compound | 형식이 스칼라가 아닌지 테스트합니다. |
is_member_pointer | 형식이 멤버에 대한 포인터인지 테스트합니다. |
형식 속성
이름 | 설명 |
---|---|
is_const | 형식이 const 인지 테스트합니다. |
is_volatile | 형식이 volatile 인지 테스트합니다. |
is_trivial | 형식이 trivial인지 테스트합니다. |
is_trivially_copyable | 형식을 일반적으로 복사할 수 있는지 테스트합니다. |
is_standard_layout | 형식이 표준 레이아웃 형식인지 테스트합니다. |
is_pod | 형식이 POD인지 테스트합니다. |
is_literal_type | 형식이 constexpr 변수이거나 constexpr 함수에서 사용할 수 있는지 테스트합니다. |
is_empty | 형식이 빈 클래스인지 테스트합니다. |
is_polymorphic | 형식이 다형 클래스인지 테스트합니다. |
is_abstract | 형식이 추상 클래스인지 테스트합니다. |
is_final | 형식이 final 로 표시된 클래스 종류인지 테스트합니다. |
is_aggregate | |
is_signed | 형식이 부호 있는 정수인지 테스트합니다. |
is_unsigned | 형식이 부호가 없는 정수인지 테스트합니다. |
is_constructible | 형식이 지정된 인수 유형을 사용하여 생성 가능한지 테스트합니다. |
is_default_constructible | 형식에 기본 생성자가 있는지 테스트합니다. |
is_copy_constructible | 형식에 복사 생성자가 있는지 테스트합니다. |
is_move_constructible | 형식에 이동 생성자가 있는지 테스트합니다. |
is_assignable | 첫 번째 형식에 두 번째 형식의 값을 할당할 수 있는지 테스트합니다. |
is_copy_assignable | 형식에 해당 형식의 const 참조 값을 할당할 수 있는지 테스트합니다. |
is_move_assignable | 형식에 해당 형식의 rvalue 참조를 할당할 수 있는지 테스트합니다. |
is_swappable | |
is_swappable_with | |
is_destructible | 형식이 소멸 가능한지 테스트합니다. |
is_trivially_constructible | 지정된 형식을 사용하여 생성될 때 형식이 특수 작업을 사용하지 않는지 테스트합니다. |
is_trivially_default_constructible | 기본 생성될 때 형식이 특수 작업을 사용하지 않는지 테스트합니다. |
is_trivially_copy_constructible | 복사를 통해 생성될 때 형식이 특수 작업을 사용하지 않는지 테스트합니다. |
is_trivially_move_constructible | 이동을 통해 생성될 때 형식이 특수 작업을 사용하지 않는지 테스트합니다. |
is_trivially_assignable | 형식이 할당 가능하며 할당에서 특수 작업을 사용하지 않는지 테스트합니다. |
is_trivially_copy_assignable | 형식이 복사 할당 가능하며 할당에서 특수 작업을 사용하지 않는지 테스트합니다. |
is_trivially_move_assignable | 형식이 이동 할당 가능하며 할당에서 특수 작업을 사용하지 않는지 테스트합니다. |
is_trivially_destructible | 형식이 소멸 가능하며 소멸자가 특수 작업을 사용하지 않는지 테스트합니다. |
is_nothrow_constructible | 형식이 생성 가능하며 지정된 형식을 사용하여 생성할 때 throw되지 않는 것으로 확인되는지 테스트합니다. |
is_nothrow_default_constructible | 형식이 기본 생성 가능하며 기본 생성 시에 throw되지 않는 것으로 확인되는지 테스트합니다. |
is_nothrow_copy_constructible | 형식이 복사 생성 가능하며 복사 생성자가 throw되지 않는 것으로 확인되는지 테스트합니다. |
is_nothrow_move_constructible | 형식이 이동 생성 가능하며 이동 생성자가 throw되지 않는 것으로 확인되는지 테스트합니다. |
is_nothrow_assignable | 형식이 지정된 형식을 사용하여 할당 가능하며 할당이 throw되지 않는 것으로 확인되는지 테스트합니다. |
is_nothrow_copy_assignable | 형식이 복사 할당 가능하며 할당이 throw되지 않는 것으로 확인되는지 테스트합니다. |
is_nothrow_move_assignable | 형식이 이동 할당 가능하며 할당이 throw되지 않는 것으로 확인되는지 테스트합니다. |
is_nothrow_swappable | |
is_nothrow_swappable_with | |
is_nothrow_destructible | 형식이 소멸 가능하며 소멸자가 throw되지 않는 것으로 확인되는지 테스트합니다. |
has_virtual_destructor |
형식에 가상 소멸자가 있는지 테스트합니다. |
has_unique_object_representations |
|
is_invocable | 지정된 인수 형식을 사용하여 호출 가능한 형식을 호출할 수 있는지 여부를 테스트합니다. C++17에 추가되었습니다. |
is_invocable_r | 지정된 인수 형식을 사용하여 호출 가능한 형식을 호출할 수 있는지 여부를 테스트하고 결과를 지정된 형식으로 변환할 수 있는지 여부를 테스트합니다. C++17에 추가되었습니다. |
is_nothrow_invocable | 지정된 인수 형식을 사용하여 호출 가능한 형식을 호출할 수 있는지 여부를 테스트하고 예외를 throw하지 않는 것으로 알려져 있습니다. C++17에 추가되었습니다. |
is_nothrow_invocable_r | 지정된 인수 형식을 사용하여 호출 가능한 형식을 호출할 수 있는지 여부를 테스트하고 예외를 throw하지 않는 것으로 알려져 있으며 결과는 지정된 형식으로 변환할 수 있습니다. C++17에 추가되었습니다. |
형식 속성 쿼리
속성 | 설명 |
---|---|
alignment_of | 형식의 맞춤을 가져옵니다. |
rank | 배열 차원 수를 가져옵니다. |
extent | 지정된 배열 차원에서 요소의 수를 가져옵니다. |
형식 관계
속성 | 설명 |
---|---|
is_same | 두 형식이 동일한지 테스트합니다. |
is_base_of | 한 형식이 다른 형식의 기본 형식인지를 테스트합니다. |
is_convertible | 한 가지 형식을 다른 형식으로 변환할 수 있는지 테스트합니다. |
const-volatile 수정
속성 | 설명 |
---|---|
add_const | 형식에서 const 형식을 생성합니다. |
add_volatile | 형식에서 volatile 형식을 생성합니다. |
add_cv | 형식에서 const volatile 형식을 생성합니다. |
remove_const | 형식에서 비const 형식을 생성합니다. |
remove_volatile | 형식에서 비volatile 형식을 생성합니다. |
remove_cv | 형식에서 비const/비volatile 형식을 생성합니다. |
참조 수정
속성 | 설명 |
---|---|
add_lvalue_reference | 형식에서 형식에 대한 참조를 생성합니다. |
add_rvalue_reference | 형식에서 형식에 대한 rvalue 참조를 생성합니다. |
remove_reference | 형식에서 비참조 형식을 생성합니다. |
부호 수정
속성 | 설명 |
---|---|
make_signed | 부호가 있는 경우 형식을 생성하거나, 형식의 크기보다 크거나 같은 부호가 있는 가장 작은 형식을 생성합니다. |
make_unsigned | 부호가 없는 경우 형식을 생성하거나, 형식의 크기보다 크거나 같은 부호가 없는 가장 작은 형식을 생성합니다. |
배열 수정
속성 | 설명 |
---|---|
remove_all_extents | 배열 형식에서 배열이 아닌 형식을 생성합니다. |
remove_extent | 배열 형식에서 요소 형식을 생성합니다. |
포인터 수정
속성 | 설명 |
---|---|
add_pointer | 형식에서 형식에 대한 포인터를 생성합니다. |
remove_pointer | 입력에 대한 포인터에서 형식을 생성합니다. |
기타 변환
속성 | 설명 |
---|---|
aligned_storage | 정렬된 형식에 대해 초기화되지 않은 메모리를 할당합니다. |
aligned_union | 특수한 생성자 또는 소멸자를 사용하여 정렬된 공용 구조체에 대해 초기화되지 않은 메모리를 할당합니다. |
common_type | 모든 매개 변수 팩 형식의 공통 형식을 생성합니다. |
conditional | 조건이 true이면 지정된 첫 번째 형식을 생성하고 그렇지 않으면 지정된 두 번째 형식을 생성합니다. |
decay | 값으로 전달된 형식을 생성합니다. 비참조, 비상수, 비휘발성 형식 또는 형식에 대한 포인터를 만듭니다. |
enable_if | 조건이 true이면 지정된 형식을 생성하고 그렇지 않으면 형식을 생성하지 않습니다. |
invoke_result | 지정된 인수 유형을 사용하는 호출 가능 형식의 반환 형식을 결정합니다. C++17에 추가되었습니다. |
result_of | 지정된 인수 유형을 사용하는 호출 가능 형식의 반환 형식을 결정합니다. C++14에서 추가되었으며 C++17에서는 더 이상 사용되지 않습니다. |
underlying_type | 열거형 형식에 대한 내부 정수 계열 형식을 생성합니다. |
논리 연산자 특성
속성 | 설명 |
---|---|
접속사 | |
분리 | |
부정 |