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.