これは、概念を理解するために私が書いたコードです。コードは問題なく、実行されます。
私が理解していないのは、なぜマークされた行が必要なのですか?
template <class T>
class D
{
public :
template <class P> //<------------------Why is this needed ? --------------
friend void print(D <P> obj);
};
template <class T>
void print(D<T> obj)
{std::cout<<sizeof(T);};
int main()
{
D <char>obj3;
print(obj3);
return 0;
}
または言い換えれば、なぜ以下が実行されないのですか?
template <class T>
class D
{
public :
friend void print(D <T> obj);
};