Dlaczego Standard zabrania deklaracji przyjacielskich częściowych specjalizacji?
Standard C ++ zabrania deklaracji znajomych częściowych specjalizacji. (§ 14.5.3 / 8):
Deklaracje przyjaciela nie deklarują częściowych specjalizacji. [Przykład:
template<class T> class A { };
class X {
template <class T> friend class A<T*>; //error
};
--end przykład]
Inne pytania, np.ten, otrzymałem odpowiedzi, które odwołują się do tego zakazu, ale chciałbym poznać uzasadnienie. Nie widzę go i nie mogę go znaleźć za pomocą mojej ulubionej wyszukiwarki. Mogę jednak stwierdzić, że wraca ono do standardu C ++ 98, więc przypuszczalnie uzasadnienie jest dość proste i jasne. Czy ktoś może mi to wyjaśnić?