[dcl.constexpr] p10, предложение 3 гласит:
В любом объявлении переменной constexpr полное выражение инициализации должно быть постоянным выражением < / а>
Однако в этом заявлении:
constexpr int a = 10;
constexpr int b = a;
a
не является постоянным выражением, поскольку это основное постоянное выражение glvalue, но не разрешенный результат постоянного выражения, поскольку он не имеет статической продолжительности хранения и не является временным объектом.
Однако с применением преобразования lvalue-to-rvalue оно станет постоянным выражением. Значит ли это, что инициализатор не обязательно должен быть постоянным выражением, а должен быть только конечный результат после преобразований?