Что-то неожиданно понял, что всячески пытался избегать такого кода и никогда на такое не напарывался
, а тут неожиданно понадобилось:
Как правильно скопировать [signed xxx] -> [unsigned xxx] и обратно ???
Сейчас ловлю UB если пытаюсь делать в лоб простым присваиванием. ВАЖНО!!! — код обязательно должен выполняться на этапе компиляции!
Рыба примерно такая:
template <typename type_t, std::enable_if_t<std::is_signed_v<type_t>, int> = 0>
constexpr std::make_unsigned_t<type_t> make_unsigned(type_t value)
{
???
}
template <typename type_t, std::enable_if_t<std::is_unsigned_v<type_t>, int> = 0>
constexpr std::make_signed_t<type_t> make_signed(type_t value)
{
???
}
P.S. Если кому интересно, нужно это так как я делаю библиотеку для работы с числами, а контейнер там содержит беззнаковые целые. Используется MSVC C++17