É legal executar especialização parcial em classe de uma classe de modelo de membro na classe derivada
É continuação deesta Pergunta, questão. Estou especificamente interessado se oparcial especialização de umclasse membro como isso:
struct FooParent {
template <class>
struct Bar{ };
};
struct Foo: FooParent {
template <class T>
struct Bar<T*> {};
};
Eu sei que isso pode ser feito dentro de um escopo de espaço para nome:
template <class T>
struct Foo::Bar<T*>{ };
Mas também estou especificamente interessado emem aula especialização parcial ao nível da classe derivada.
Tanto o clang quanto o gcc reclamam quando encontram um antigo:
clang afirma que existe uma especialização explícita de modelo que obviamente não ocorre:
erro: especialização explícita de 'Bar' no escopo da classe
O gcc é um pouco menos detalhado aqui e diz que a especialização do modelo de membro deve ser realizada em um escopo de namespace, o que obviamente não é o caso de uma classe não derivada.
erro: a especialização de 'template struct FooParent :: Bar' deve aparecer no escopo do espaço para nome
O gcc está aqui na sua mensagem de erro?