Я изучал, что разрешено в ядро константного выражения *, которое рассматривается в разделе 5.19
Постоянные выражения, параграф 2 из черновик стандарта С++, в котором говорится:
Условное выражение является выражением основной константы, если оно не включает одно из следующих значений в качестве потенциально оцениваемого подвыражения (3.2), но подвыражения логических операций AND (5.14), логического ИЛИ (5.15) и условного (5.16), которые не оцениваются, не рассматриваются [Примечание: перегруженный оператор вызывает функцию.-end note]:
и перечисляет исключения в последующих марках и включает (выделение мое):
- операция, которая имела бы поведение undefined [Примечание: включая, например, целочисленное переполнение цепочки (раздел 5), определенную арифметику указателя (5.7), деление на ноль (5.6), или некоторые операции сдвига (5.8) -end note];
А? Почему константные выражения нуждаются в этом разделе для описания undefined поведения? Есть ли что-то особенное в отношении постоянных выражений, которые требуют, чтобы поведение undefined было выделено в исключениях?
Имеет ли данное предложение какие-либо преимущества или инструменты, которые у нас не были бы без него?
Для справки это выглядит как последняя версия предложения для Обобщенные константные выражения.