Ответ 1
Ассоциативность и порядок оценки - это не одно и то же. Выражение a << b << c
эквивалентно (a << b) << c
из-за ассоциативности слева направо, но когда дело доходит до порядка оценки, компилятор может сначала оценить c
, затем a << b
, а также оценить b
, прежде чем он примет оценку a
. Фактически, он даже может оценивать члены в порядке b
→ c
→ a
если он хочет, и это может быть просто если он сделает вывод, что такой порядок максимизирует производительность, сводя к минимуму конвейерные киоски, промахи в кеше и т.д.