Parâmetros de modelo não-tipo dependentes

Considere a seguinte classe:

class Foo
{
  enum Flags {Bar, Baz, Bax};

  template<Flags, class = void> struct Internal;

  template<class unused> struct Internal<Bar, unused> {/* ... */};
  template<class unused> struct Internal<Baz, unused> {/* ... */};
  template<class unused> struct Internal<Bax, unused> {/* ... */};
};

O esboço da classe acima compila e funciona conforme o esperado quando testado no VC ++ 2010 e Comeau C ++. No entanto, quandoFoo é transformado em um modelo em si, o snippet acima é quebrado no VC ++ 2010.

Por exemplo, o seguinte trecho:

template<class> class Foo
{
  // Same contents as the original non-templated Foo.
};

Rende o seguinteclasse de erro:

C2754: 'Foo<<unnamed-symbol>>::Internal<Bar,unused>' : a partial specialization cannot have a dependent non-type template parameter
C2754: 'Foo<<unnamed-symbol>>::Internal<Baz,unused>' : a partial specialization cannot have a dependent non-type template parameter
C2754: 'Foo<<unnamed-symbol>>::Internal<Bax,unused>' : a partial specialization cannot have a dependent non-type template parameter
Alguém pode explicar o que está acontecendo aqui em inglês simples?Como posso corrigir isso (ou seja, manter especializações pseudo-explícitas internas em um modeloFoo) no VC ++ 2010?

questionAnswers(1)

yourAnswerToTheQuestion