for compile c++ gcc clang language-lawyer constexpr

c++ - compile - GCC acepta `constexpr struct{} s;` pero Clang lo rechaza. ¿Quién es correcto?



llvm 3.7 1 (1)

El siguiente código compila bien con GCC:

constexpr struct {} s;

Pero Clang lo rechaza con el siguiente error:

error: inicialización predeterminada de un objeto de tipo const ''const struct (estructura anónima en ...)'' sin un constructor predeterminado proporcionado por el usuario

He probado todas las versiones de GCC y Clang que pude encontrar en https://gcc.godbolt.org/ . Cada versión de GCC acepta el código y cada versión de Clang lo rechaza.

Me pregunto qué compilador es el correcto en este caso.
¿Qué dice el estándar sobre esto?


Clang se adhiere al siguiente pasaje en [dcl.init]/7 :

Si un programa solicita la inicialización predeterminada de un objeto de un tipo const-calificado T , T será un tipo de clase con un constructor predeterminado proporcionado por el usuario.

Esta redacción es defective y, por tanto, GCC la ignora (y, a partir de v3.9, también por Clang ).
La cita anterior difiere de la cuestión central 253 debido a que N2762 mueve / ajusta el párrafo 9 como se cita.