В дальнейшем, не должен ли конструктор базового класса генерироваться компилятором на основе типа аргумента конструктора производного класса?
template <class T>
class foo
{
int a;
public:
foo(T a){}
// When I convert the constructor to a function template, it works fine.
// template <typename T> foo(T a){}
};
class bar : public foo<class T>
{
public:
bar(int a):foo(a){}
};
int main(void)
{
bar obj(10);
system("pause");
return 0;
}
ошибка C2664: «foo :: foo (T)»: невозможно преобразовать параметр 1 из «int» в «T»
Я понимаю ошибку, но почему?