Следующий фрагмент кода компилируется, только если я явно указываю аргумент шаблона T
для структуры Base
в Derived
ctor:
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>
)?Это требование сделано намеренно?