Почему операции с примитивными типами не последовательны, а не определены?

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

4

Решение

Как правило, существует как можно больше «неупорядоченных».

Невозможно заставить две функции выполнять чередование в C ++. Поэтому невозможно запустить два operator++ реализации чередования.

Поэтому для реализации типов классов operator++, это неопределенно упорядочено.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]