为什么在调用模板基类的构造函数时必须为其指定模板参数?

时间:2018-10-03 17:38:18

标签: c++ templates inheritance template-deduction

仅当我在T ctor中为Base结构明确指定模板参数Derived时,以下代码段才会编译:

template <class T>
struct Base
{
    Base(int) {}
};

template <class T>
struct Derived : Base<T>
{
    Derived(int i) : Base<T>(i) {}
};

如果我呼叫Base(i)而不是Base<T>(i)-它不起作用。为什么编译器无法确定Base实际上是Base<T>(因为我是从Base<T>派生的)?这个要求是故意制定的吗?

0 个答案:

没有答案