Spec-Zone.ru › C++

std::make_unsigned

Определено в заголовке <type_traits>
template< class T >
struct make_unsigned;
(с C++11)

Если T является целочисленным типом (кроме bool) или типом перечисления, предоставляет член typedef type, который является типом целого без знака, соответствующим T, с теми же cv-квалификаторами.

Если T — это знаковый или беззнаковый тип char, short, int, long, long long; предоставляется беззнаковый тип из этого списка, соответствующий T.

Если T — это тип перечисления или char, wchar_t, char8_t(с C++20), char16_t, char32_t; предоставляется тип целого без знака с наименьшим рангом, имеющим те же sizeof что и T.

В противном случае поведение не определено.

(до C++20)

В противном случае программа имеет ошибку.

(с C++20)

Поведение программы, добавляющей специализации для std::make_unsigned, не определено.

Типы-члены

Название Определение
type тип целого без знака, соответствующий T

Вспомогательные типы

template< class T >
using make_unsigned_t = typename make_unsigned<T>::type;
(с C++14)

Пример

#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>
    );
}

См. также

is_signed
(C++11)
проверяет, является ли тип знаковым арифметическим типом
(шаблон класса)
is_unsigned
(C++11)
проверяет, является ли тип беззнаковым арифметическим типом
(шаблон класса)
make_signed
(C++11)
делает данный целочисленный тип знаковым
(шаблон класса)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/types/make_unsigned

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API