Чтобы привести конкретный пример, x86 обрезает число сдвигов до 5 бит (6 бит для 64-разрядных сдвигов), а ARM обрезает число сдвигов до 8 бит.В текущем стандарте C ++ компиляторы для обоих процессоров могут реализовывать сдвиги с помощью одного кода операции.
Если стандарт C ++ определит результат сдвигов более чем на длину операнда определенным образом, компиляторы нацелены как минимум на одиниз семейств процессоров (и, возможно, обоих, если результат, требуемый C ++, не будет соответствовать какой-либо аппаратной реализации, как, например, предложенное вами поведение), придется реализовывать каждую операцию сдвига с использованием ветвей, что приведет к требуемому результату, когда код операции CPU не будет 'т.