17

C++ 標準では、部分的な特殊化のフレンド宣言を禁止しています。(§14.5.3/8):

フレンド宣言は、部分的な特殊化を宣言してはなりません。[例:

template<class T> class A { };
class X {
    template <class T> friend class A<T*>;   //error
};

--終わりの例]

この質問など、他の質問には、この禁止事項を発動する回答が寄せられていますが、その根拠を知りたいです。見ないし、お気に入りの検索エンジンでも見つからない。しかし、それは C++98 標準にさかのぼることができるので、おそらくその理論的根拠は非常に基本的で明確です。誰かが私にそれを説明できますか?

4

2 に答える 2