Возьми эту игрушечную программу:
int main()
{
int a = 1;
a = ++a ;
}
Компиляция под g cc 9.3 (или даже транк) с -Wall -std=c++17
выходами:
<source>:4:5: warning: operation on 'a' may be undefined [-Wsequence-point]
4 | a = ++a ;
| ~~^~~~~
Я знаю, что в прошлом это действительно была проблема, но другой ответ на тот же вопрос SO указывает на ту часть стандарта C ++ 17, которая была исправлена на указать, что в операциях присваивания rhs секвенируется перед фактическим присвоением:
8.18. ... Во всех случаях присваивание выполняется после вычисления значения правого и левого операндов и перед вычислением значения выражения присваивания.
Так что это предупреждение действительно поддельное или я чего-то не хватает?