В C ++ есть оператор присваивания, который можно использовать (по крайней мере, в
принцип) в любом выражении. Обратите внимание, что в:
int& y = x = 11;
Первый =
является , а не оператором; это часть синтаксиса данных
определение. Что следует за этим =
является выражением, которое должно привести
в lvalue типа int
. Поскольку x
является int
, x = 11
имеет тип
int
. И результат встроенного оператора присваивания является lvalue,
ссылаясь на объект, который был целью назначения, так
Вы выполнили необходимые условия.
Конечно, это не значит, что это хороший код.