Programa com o construtor "noexcept" aceito pelo gcc, rejeitado pelo clang

O código:

struct T { T() {} };

struct S
{
    T t;

    S() noexcept = default;
};

int main()
{
//    S s;
}

O g ++ 4.9.2 aceita isso sem erros ou avisos, no entanto, o clang 3.6 e 3.7 reportam para a linha 7:

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

No entanto, se a linhaS s; não é comentado, o g ++ 4.9.2 agora 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;
     ^

Qual compilador é adequado para o código original?

Fundo:

O g ++ ainda permite que o seguinte seja adicionado aomain:

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

quais saídas0. Encontrei esse problema ao usar o clang para compilar algum código complicado que fazia uso pesado de modelos, SFINAE e noexcept. Nesse códigoS eT são classes de modelos; então o comportamento depende de quais tiposS foi instanciado com. O Clang o rejeita com esse erro para alguns tipos, enquanto o g ++ permite e o SFINAE funciona com base emis_constructible e características semelhantes.

questionAnswers(1)

yourAnswerToTheQuestion