Если i
является int
, выражения как ++i + ++i
неопределенное поведение, так как есть 2 непоследовательных модификации i
, Однако если i
это какой-то int
-подобный класс, ++i + ++i
вместо этого имеет неопределенно последовательные модификации, и, следовательно, определяется поведение (с детерминированным результатом в этом случае). Есть ли случай, когда было бы лучше, если бы операции с примитивами не выполнялись последовательно, а не определялись последовательно? Если так, то почему этот случай не применяется к созданным пользователем типам? Если нет, то почему примитивные операции вообще не выполняются?
Как правило, существует как можно больше «неупорядоченных».
Невозможно заставить две функции выполнять чередование в C ++. Поэтому невозможно запустить два operator++
реализации чередования.
Поэтому для реализации типов классов operator++
, это неопределенно упорядочено.
Других решений пока нет …