>>342

template <class X>
class A {
X *x;
public:
A(X *a) : x(a) {}
~A(){}
};

int x = 1;
A<int> a(&x);
A<A> b(new A<int>(&x)); ←ここエラー

こういうときに
class A {
A *x;
public:
A(A *a) : x(a) {}
~A(){}
};
みたいな A とよく似た B C D ... があるとき
template <class X>
class X {
X *x;
public:
X(X *a) : x(a) {}
~X(){}
};
って描けると便利かなと思いました