lka*_*nab 4 c++ gcc templates initialization
在visual c ++中接受下面的代码,g ++将生成错误:"类Derived没有任何字段名Base",它遵循标准?
template <class T>
class Base
{
public:
Base(){};
};
template <class T>
class Derived:public Base<T>
{
public:
Derived():Base(){}
};
Run Code Online (Sandbox Code Playgroud)
顺便说一句:都接受
Derived():Base<T>(){}
Run Code Online (Sandbox Code Playgroud)
所以,我会跟着gcc
MSVC++不正确.Base是模板,而不是类型.
注意,在通常的情况下,Base是在范围内Derived<T>查找,这意味着它将首先找到从中继承的注入类名Base<T>,它指的是类型Base<T>.但是,由于您具有依赖基类,因此Base<T>未找到继承自的名称(不查看基类范围).