Почему мы должны указывать аргументы шаблона для базового класса шаблона при вызове его конструктора? - PullRequest
0 голосов
/ 03 октября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...