基类模板实例化取决于派生类构造函数参数类型

Mah*_*esh 2 c++ templates

在下面,不应该基于派生类构造函数参数类型由编译器生成基类构造函数?

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;
}
Run Code Online (Sandbox Code Playgroud)

错误C2664:'foo :: foo(T)':无法将参数1从'int'转换为'T'

我理解错误,但为什么呢?

ice*_*ime 5

语法class bar : public foo<class T>不正确.