Std::make_signed, который принимает типы с плавающей запятой ⇐ C++
-
Anonymous
Std::make_signed, который принимает типы с плавающей запятой
У меня есть шаблонный класс, экземпляр которого можно создать только для скалярных типов (целые числа, числа с плавающей запятой и т. д.), и я хочу, чтобы typedef-член всегда был знаковым вариантом типа. То есть:
целое число без знака -> целое число со знаком
длинная подпись -> длинная подпись (уже подписана)
беззнаковый символ -> знаковый символ
float -> float
длинный двойной -> длинный двойной
и т. д...
К сожалению, std::make_signed работает только для целочисленных типов, а не для типов с плавающей запятой. Каков самый простой способ сделать это? Я ищу что-то вроде using SignedT = ...;, чтобы оно было частью моего шаблонного класса с параметром шаблона T, который уже гарантированно является скалярным.
У меня есть шаблонный класс, экземпляр которого можно создать только для скалярных типов (целые числа, числа с плавающей запятой и т. д.), и я хочу, чтобы typedef-член всегда был знаковым вариантом типа. То есть:
целое число без знака -> целое число со знаком
длинная подпись -> длинная подпись (уже подписана)
беззнаковый символ -> знаковый символ
float -> float
длинный двойной -> длинный двойной
и т. д...
К сожалению, std::make_signed работает только для целочисленных типов, а не для типов с плавающей запятой. Каков самый простой способ сделать это? Я ищу что-то вроде using SignedT = ...;, чтобы оно было частью моего шаблонного класса с параметром шаблона T, который уже гарантированно является скалярным.
Мобильная версия