Spec-Zone.ru › C++

std::make_signed

Определено в заголовочном файле <type_traits>
template< class T >
struct make_signed;
(начиная с 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_signed, поведение не определено.

Типы-члены

Имя Определение
type знаковый целочисленный тип, соответствующий T

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

template< class T >
using make_signed_t = typename make_signed<T>::type;
(начиная с C++14)

Пример

#include <type_traits>

enum struct E : unsigned short {};

int main()
{
    using char_type = std::make_signed_t<unsigned char>;
    using int_type  = std::make_signed_t<unsigned int>;
    using long_type = std::make_signed_t<volatile unsigned long>;
    using enum_type = std::make_signed_t<E>;

    static_assert(
        std::is_same_v<char_type, signed char> and
        std::is_same_v<int_type, signed int> and
        std::is_same_v<long_type, volatile signed long> and
        std::is_same_v<enum_type, signed short>
    );
}

См. также

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

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

Spec-Zone.ru

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