継承とテンプレートに関して次の問題があります。
class Base {};
class Deriv : public Base {};
template <class T> class X{};
void f(X<Base>& inst) {}
int main()
{
X<Base> xb;
f(xb);
X<Deriv> xd;
f(xd);
return 0;
}
X<Base>
との関係がないため、プログラムはコンパイルされませんX<Deriv>
。それでも、でできることはすべてできるはずだと思いX<Base>
ますX<Deriv>
。f
関数本体を新しい関数にコピーする以外にできることはありますvoid g(X<Deriv>& inst)
か?