Por que o Standard proíbe declarações de amizade de especializações parciais?
O padrão C ++ proíbe declarações de amizade de especializações parciais. (§14.5.3 / 8):
As declarações de amigos não devem declarar especializações parciais. [Exemplo:
template<class T> class A { };
class X {
template <class T> friend class A<T*>; //error
};
--por exemplo]
Outras questões, por ex.este, recebi respostas que invocam essa proibição, mas gostaria de conhecer o raciocínio. Eu não vejo e não consigo encontrá-lo com o meu mecanismo de busca favorito. Eu posso encontrar no entanto que ele vai direto para o padrão C ++ 98, então presumivelmente o raciocínio é bastante básico e claro. Alguém pode explicar isso para mim?