Вычисления по константам оптимизируются, поэтому ничего не теряется.
Ответ 3
Возможно, я ошибаюсь (и я не изучал источник), но я думаю, что это просто для удобства чтения.
Ответ 4
Я думаю, что точка (еще не упомянутая) заключается в том, что
Все, кроме самых основных компиляторов, будут выполнять сдвиг во время компиляции. Всякий раз, когда вы используете операторов с постоянными выражениями, компилятор сможет сделать это до того, как код будет сгенерирован. Обратите внимание, что до constexpr и С++ 11 это не распространялось на функции.