仅当我在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>
派生的)?这个要求是故意制定的吗?