Usando um enum como uma expressão constante. Qual compilador está certo?

O código a seguir usa o membro enumm como uma expressão constante, ou seja, como um parâmetro de modelo. O código é compilado no gcc, mas não no clang (demonstração ao vivo) Clang diz "erro: o argumento do modelo não-tipo não é uma expressão constante".

O problema pode ser resolvido trocando a linha// 1 porA<tst<p>::m> a. Portanto, minha pergunta não é como corrigir esse problema, mas qual compilador está correto.

template<size_t n> struct A{};

template<size_t n>
struct tst
{   enum : size_t { m= n % 15 };

    template<size_t p>
    void
    call( tst<p> const &t2 ) {
        A<t2.m>  a; // 1
    }
};

questionAnswers(1)

yourAnswerToTheQuestion