2 분 소요

기본 타입

항목 내용
size_t unsigned int 으로서 크기나 갯수를 나타냅니다.
ptrdiff_t signed int 으로서 포인터간의 차를 나타냅니다.
nullptr_t (C++11~) nullptr을 저장하는 타입입니다.
NULL 널포인터의 값이며, #define NULL 0 입니다.
max_align_t (C++11~) (작성중)
offsetof() (작성중)
byte (C++17~) 순수한 1byte 크기를 갖는 타입입니다.(char, unsigned char는 문자 처리 의미가 포함된 1byte 크기의 타입입니다.)

수학 타입

항목 내용
div_t (작성중)
ldiv_t (작성중)
lldiv_t (C++11) (작성중)
imaxdiv_t (C++11) (작성중)
float_t (C++11) (작성중)
double_t (C++11) (작성중)

(C++11~) 고정 너비 정수 타입

항목 내용
int8_t (C++11~)
int16_t (C++11~)
int32_t (C++11~)
int64_t (C++11~)
(작성중)
int_fast8_t (C++11~)
int_fast16_t (C++11~)
int_fast32_t (C++11~)
int_fast64_t (C++11~)
(작성중)
int_least8_t (C++11~)
int_least16_t (C++11~)
int_least32_t (C++11~)
int_least64_t (C++11~)
(작성중)
intmax_t (C++11~) (작성중)
intptr_t (C++11~) (작성중)
uint8_t (C++11~)
uint16_t (C++11~)
uint32_t (C++11~)
uint64_t (C++11~)
(작성중)
uint_fast8_t (C++11~)
uint_fast16_t (C++11~)
uint_fast32_t (C++11~)
uint_fast64_t (C++11~)
(작성중)
uint_least8_t (C++11~)
uint_least16_t (C++11~)
uint_least32_t (C++11~)
uint_least64_t (C++11~)
(작성중)
uintmax_t (C++11~) (작성중)
uintptr_t (C++11~) (작성중)

(C++23~) 고정 너비 실수 타입

항목 내용
float16_t (C++23~) (작성중)
float32_t (C++23~) (작성중)
float64_t (C++23~) (작성중)
float128_t (C++23~) (작성중)
bfloat16_t (C++23~) (작성중)

타입 최대/최소값

항목 내용
numeric_limits 타입의 최대, 최소값을 알 수 있습니다.

C스타일 최대/최소값

항목 내용
CHAR_BIT (작성중)
MB_LEN_MAX (작성중)
CHAR_MIN (작성중)
CHAR_MAX (작성중)
SCHAR_MIN
SHRT_MIN
INT_MIN
LONG_MIN
LLONG_MIN (C++11~)
(작성중)
SCHAR_MAX
SHRT_MAX
INT_MAX
LONG_MAX
LLONG_MAX (C++11~)
(작성중)
UCHAR_MAX
USHRT_MAX
UINT_MAX
ULONG_MAX
ULLONG_MAX (C++11~)
(작성중)
WCHAR_MIN (C++11~) (작성중)
WCHAR_MAX (C++11~) (작성중)
PTRDIFF_MIN (C++11~) (작성중)
PTRDIFF_MAX (C++11~) (작성중)
SIZE_MAX (C++11~) (작성중)
SIG_ATOMIC_MIN (C++11~) (작성중)
SIG_ATOMIC_MAX (C++11~) (작성중)
WINT_MIN (C++11~) (작성중)
WINT_MAX (C++11~) (작성중)

런타임 타입

항목 내용
type_info 개체의 타입 정보입니다.
bad_typeid 널포인터를 역참조하여 typeid를 구할때 bad_typeid 예외가 발생합니다.
T* p = NULL;
typeid(*p).name();
bad_cast dynamic_cast의 실패시 bad_cast 예외가 발생합니다.
type_index (C++11~) type_info의 래퍼로서 type_info컨테이너에서 관리할 수 있게 합니다.

typeid()const type_info&를 리턴하는데요, 컨테이너 요소 규칙복사 생성자연관 컨테이너를 위한 대소 비교를 제공하지 않아 컨테이너에 추가할 수 없습니다.

type_indexconst type_info&컨테이너의 요소로 사용할 수 있게끔 복사 생성자와 대소 비교를 구현한 래퍼입니다.

이를 이용하면 const type_info&를 관리하는 컨테이너를 만들 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class A {};
class B {};

// const std::type_info& 여서 컨테이너에서 사용할 수 없습니다.
// const std::type_info& a{typeid(A)};
// const std::type_info& b{typeid(B)};

std::type_index a{typeid(A)};
std::type_index b{typeid(B)};

std::map<std::type_index, int> m;

m.insert(std::make_pair(a, 0)); // A 타입의 추가 정보를 저장할 수 있습니다.
m.insert(std::make_pair(b, 1)); // B 타입의 추가 정보를 저장할 수 있습니다.

EXPECT_TRUE(m[typeid(A)] == 0 && m[typeid(B)] == 1);

태그:

카테고리:

업데이트:

댓글남기기