Я читаю С++ 14 N3797, и я столкнулся с 3.3.7/1:
Если переупорядочение объявлений-членов в классе дает альтернативный действительный программа согласно (1) и (2), программа плохо сформирована, диагностика отсутствует требуется.
Существуют (1) и (2):
1) Потенциальная область имени, объявленного в классе, состоит не только из декларативного региона, следующего за точкой названия декларации, но и всех тел функций, аргументов по умолчанию, исключение-спецификации и скобки-равные-инициализаторы нестатические данные в этом классе (включая такие вещи во вложенных классы).
2) Имя N, используемое в классе S, должно ссылаться на одно и то же объявление в его контекст и при повторной оценке в завершенном объеме С. Нет для нарушения этого правила требуется диагностика.
То есть, если мы напишем следующее:
class A
{
int a;
int b;
}
то программа плохо сформирована. Объявление реорганизации члена дает альтернативную действующую программу:
class A
{
int b;
int a;
}
Могу ли я правильно понять это правило?