C++:使用模板继承 class

C++: Inherit class with templates

我知道如何使用模板继承 类。但是说到嵌套classes/templates,我就一头雾水,网上也搜不到(可能是不知道关键字吧)

template <typename T>
class A;

template <class T1, class T2>
class B;

template < typename T1, class T2, class T3 >
class C2:
    public C< A<T1>, B<T2, T3> >
{};

我希望 C2 的定义方式与 C 的定义方式相同,即 C2< A<T1>, B<T2, T3> > 而不是 C2<T1, T2, T3>。但我不知道如何实现该目标的任何语法或解决方法。

编辑:T.C。是的,我希望最终用户只写C2< A<T1>, B<T2, T3> > foo;,不应该允许C2<foo, bar> foo;

这对我有用:

template <typename T>
class A {};

template <class T1, class T2>
class B {};

template < typename T1, class T2>
class C {};

// forward declare C2 but don't define it.    
template < typename T1, class T2 > class C2;

// Create the only specialization that depends on using A and B.
template < typename T1, class T2, class T3 >
class C2<A<T1>, B<T2, T3> >: public C< A<T1>, B<T2, T3> >
{};

int main()
{
   C2<A<int>, B<double, float>> c1; // OK.
                                    // This creates an instance of the
                                    // only specialization that has
                                    // been defined.

   C2<int, double> c2;              // Not OK.
                                    // The generic template class has
                                    // been forward declared but has not
                                    // not been defined.
}