- Значение целого числа со знаком находится в пределах «диапазона B», т. е. оно находится между -2B-1 и 2B-1-1 (включительно).
- B меньше или равно разрядности обоих целочисленных типов.
- В реализации/архитектуре используется прямой порядок байтов.
Код: Выделить всё
template
constexpr U mask() {
if constexpr (B == 8 * sizeof(U))
return std::numeric_limits::max();
else
return (static_cast(1)
Подробнее здесь: [url]https://stackoverflow.com/questions/79809112/can-i-safely-copy-lowest-bits-from-signed-to-unsigned-integer-by-casting[/url]