При оценке выражения:
a1 = a2 = a3
группировка выполняется справа налево, поэтому выражение принимает следующий вид:
a1 = (a2 = a3)
// ^^^^^^^^^ const, but evaluated first, so ok.
Это нормально, поскольку выражение в скобках дает const
значение, которое можно использовать в качестве аргумента для operator=
.
Однако в выражении:
(a1 = a2) = a3
//^^^^^^^^^ const, but evaluated first, so assigning to the result is not ok.
выражение в скобках снова дает значение const
, но теперь вы пытаясь присвоить значение const
, что невозможно.