Std::make_signed, который принимает типы с плавающей запятойC++

Программы на C++. Форум разработчиков
Anonymous
Std::make_signed, который принимает типы с плавающей запятой

Сообщение Anonymous »


У меня есть шаблонный класс, экземпляр которого можно создать только для скалярных типов (целые числа, числа с плавающей запятой и т. д.), и я хочу, чтобы typedef-член всегда был знаковым вариантом типа. То есть:

целое число без знака -> целое число со знаком
длинная подпись -> длинная подпись (уже подписана)
беззнаковый символ -> знаковый символ
float -> float
длинный двойной -> длинный двойной
и т. д...

К сожалению, std::make_signed работает только для целочисленных типов, а не для типов с плавающей запятой. Каков самый простой способ сделать это? Я ищу что-то вроде using SignedT = ...;, чтобы оно было частью моего шаблонного класса с параметром шаблона T, который уже гарантированно является скалярным.

Вернуться в «C++»