типы перебрать. Просто руками вбить int, unsigned, long .... или что-то умнее есть?
никаким не перебрать
Тебя фактически интересует sizeof и sign. Берешь от исходных типов sizeof и sign, комбинируешь каким-то образом, получаешь результат и по результату уже нужно будет найти тип (пара специализаций шаблонов)
ага, идею вроде понял, благодарю
ему нужно уметь переходить к более широкому signed
Примерно так: template <std::size_t Size, bool IsSigned> struct helper; template <1, true> struct helper { using type = std::int8_t; }; template <1, false> struct helper { using type = std::uint8_t; }; // ... constexpr auto size1 = sizeof(L); constexpr auto sign1 = std::is_signed_v<L>; constexpr auto size2 = sizeof(R); constexpr auto sign2 = std::is_signed_v<R>; constexpr auto size = MAGIC(...); constexpr auto sign = MAGIC(...); using Result = typename helper<size, sign>::type;
Обсуждают сегодня