Miembro de datos `static constexpr auto` inicializado con enumeración sin nombre

Estaba trabajando en un proyecto C ++ 11 únicamente usandoclang++-3.4y decidí compilar usandog++-4.8.2 en caso de existir discrepancias en los errores producidos. Resultó que g ++ rechaza algún código que clang ++ acepta. He reducido el problema al MWE que figura a continuación.

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: error: ‘const<anonymous enum> foo<int>::value", Declarado usando el tipo anónimo, se usa pero nunca se define [-permisivo]

static const auto value = A;

Me gustaría recibir ayuda para responder las siguientes dos preguntas:

¿Qué compilador es correcto en su interpretación del estándar? Supongo que un compilador tiene razón al aceptar o rechazar el código, y el otro está equivocado.

¿Cómo puedo solucionar este problema? No puedo nombrar la enumeración anónima, porque es de una biblioteca de terceros (en mi caso, las enumeraciones eranEigen::RowMajor&nbsp;yEigen::ColMajor)