Membro de dados `static constexpr auto` inicializado com enum sem nome

Eu estava trabalhando em um projeto C ++ 11 usando apenasclang++-3.4e decidiu compilar usandog++-4.8.2 caso houvesse discrepâncias nos erros produzidos. Acontece que o g ++ rejeita algum código que o clang ++ aceite. Eu reduzi o problema ao MWE dado abaixo.

enum { a };

template <class T>
struct foo
{
    static constexpr auto value = a;
};

int main()
{
    static constexpr auto r = foo<int>::value;
}

foo.cpp: 5: 23: erro: ‘const<anonymous enum> foo<int>::value', Declarado usando o tipo anônimo, é usado, mas nunca definido [-permissive]

static const auto value = A;

Gostaria de ajuda para responder às duas perguntas a seguir:

Qual compilador está correto em sua interpretação do padrão? Estou assumindo que um compilador está certo ao aceitar ou rejeitar o código, e o outro está errado.

Como posso solucionar esse problema? Não posso nomear a enumeração anônima, porque é de uma biblioteca de terceiros (no meu caso, as enumerações eramEigen::RowMajor eEigen::ColMajor)

questionAnswers(3)

yourAnswerToTheQuestion