make_unsigned
make_unsigned (부호 없는 정수형 얻기)
std::make_unsigned는 주어진 정수형이나 열거형에 대응하는 부호 없는 정수형을 구하는 클래스 템플릿이에요. 이 템플릿을 사용하면 부호 있는 타입을 같은 크기의 부호 없는 타입으로 변환할 수 있어요. C++11부터 사용할 수 있고, C++14부터는 make_unsigned_t 별칭 템플릿도 제공해요.
출처: cppreference
본문
<type_traits> 헤더에 정의되어 있어요.
<type_traits> 헤더에 정의됨 |
||
|---|---|---|
template < class T > struct make_unsigned ; |
(C++11부터) |
T가 정수형(bool 제외) 또는 열거형이면, T에 대응하는 부호 없는 정수형으로 동일한 cv 한정자를 갖는 멤버 typedef type을 제공해요.
T가 signed 또는 unsigned char, short, int, long, long long이면, 이 목록에서 T에 대응하는 부호 없는 정수형이 제공돼요.
T가 열거형 또는 char, wchar_t, char8_t(C++20부터), char16_t, char32_t이면, T와 같은 sizeof를 가지면서 가장 작은 rank를 가진 부호 없는 정수형이 제공돼요.
| 그 외의 경우 동작은 정의되지 않아요. | (C++20까지) |
|---|---|
| 그 외의 경우 프로그램은 ill-formed예요. | (C++20부터) |
프로그램이 std::make_unsigned에 특수화를 추가하면 동작은 정의되지 않아요.
Member types
| 이름 | 정의 |
|---|---|
type |
T에 대응하는 부호 없는 정수형 |
Helper types
template < class T > using make_unsigned_t = typename make_unsigned < T >:: type ; |
(C++14부터) |
|---|
Example
#include <type_traits>
int main()
{
using uchar_type = std::make_unsigned_t<char>;
using uint_type = std::make_unsigned_t<int>;
using ulong_type = std::make_unsigned_t<volatile long>;
static_assert(
std::is_same_v<uchar_type, unsigned char> and
std::is_same_v<uint_type, unsigned int> and
std::is_same_v<ulong_type, volatile unsigned long>
);
}
See also
is_signed (C++11) |
타입이 부호 있는 산술형인지 확인해요 (클래스 템플릿) |
|---|---|
is_unsigned (C++11) |
타입이 부호 없는 산술형인지 확인해요 (클래스 템플릿) |
make_signed (C++11) |
주어진 정수형에 대응하는 부호 있는 정수형을 얻어요 (클래스 템플릿) |
make_signed (C++26) |
반영된 정수형에 대응하는 부호 있는 정수형을 반환해요 (함수) |
make_unsigned (C++26) |
반영된 정수형에 대응하는 부호 없는 정수형을 반환해요 (함수) |