Inicializando um membro de dados constexpr estático da classe base usando um membro de dados constexpr estático da classe derivada

Considere o seguinte código:

template<typename T>
struct S { static constexpr int bar = T::foo; };

struct U: S<U> { static constexpr int foo = 42; };

int main() { }

GCC v6.1 compila,clang 3.8 rejeita-o com o erro:

2: erro: nenhum membro chamado 'foo' em 'U'
struct S {constexpr estático int bar = T :: foo; };

Qual compilador está certo?
Poderia ser devido ao fato de queU não é um tipo completo no ponto em que tentamos usá-lo dentroS?
Nesse caso, ele deve ser considerado um bug do GCC, mas eu gostaria de saber se estou certo antes de pesquisar / abrir um problema no rastreador de erros ...

EDITAR

Enquanto isso eu abri umerro para o GCC.
Esperando que ele aceite a resposta.

questionAnswers(1)

yourAnswerToTheQuestion