Spec-Zone.ru › C++

std::make_unsigned

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

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

Если T является знаковым или беззнаковым типом char, short, int, long, longlong, предоставляется соответствующий 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)
получает соответствующий знаковый тип для заданного целочисленного типа
(шаблон класса)
make_signed
(C++26)
возвращает соответствующий знаковый тип для отражённого целочисленного типа
(функция)
make_unsigned
(C++26)
возвращает соответствующий беззнаковый тип для отражённого целочисленного типа
(функция)

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

Spec-Zone.ru

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