Побитовый каст singed to unsigned
От: Videoman Россия http://www.htsproduction.com/
Дата: 26.05.20 18:48
Оценка:
Что-то неожиданно понял, что всячески пытался избегать такого кода и никогда на такое не напарывался , а тут неожиданно понадобилось:
Как правильно скопировать [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
http://www.gravatar.com/avatar/60560936caa07b944d4c3cecf1c06cc5?s=80&d=identicon
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.