Programa con constructor "noexcept" aceptado por gcc, rechazado por clang

El código:

struct T { T() {} };

struct S
{
    T t;

    S() noexcept = default;
};

int main()
{
//    S s;
}

g ++ 4.9.2 acepta esto sin errores ni advertencias, sin embargo, clang 3.6 y 3.7 informan para la línea 7:

error: exception specification of explicitly defaulted default constructor does not match the calculated one

Sin embargo, si la líneaS s; no está comentado, g ++ 4.9.2 ahora informa:

noex.cc: In function 'int main()':
noex.cc:12:7: error: use of deleted function 'S::S()'
     S s;
       ^
noex.cc:7:5: note: 'S::S() noexcept' is implicitly deleted because its  exception-specification does not match the implicit exception-specification ''
     S() noexcept = default;
     ^

¿Qué compilador es el adecuado para el código original?

Antecedentes:

g ++ incluso permite que se agregue lo siguiente amain:

std::cout << std::is_constructible<S>::value << '\n';

que salidas0. Encontré este problema al usar clang para compilar un código complicado que hacía un uso intensivo de plantillas, SFINAE y no, excepto. En ese códigoS yT son clases de plantilla; entonces el comportamiento depende de qué tiposS fue instanciado con. Clang lo rechaza con este error para algunos tipos, mientras que g ++ lo permite y SFINAE funciona segúnis_constructible y rasgos similares.

Respuestas a la pregunta(1)

Su respuesta a la pregunta