读书人

GCC停模板显示实例化

发布时间: 2013-09-27 14:23:43 作者: rapoo

GCC下模板显示实例化
在VS下,我可以在一个模板类里面显示实例化另外一个模板类,代码如下:


template <class T>
class ModuleInstance
{
public:
static T t;
}

template <class T>
class Module
{
public:
template class ModuleInstance<T>;
};


class Test : public Module<Test>
{
public:
Test()
{
printf("construct\n");
}
}

int main()
{
return 0;
}


这段代码的作用是可以直接产生一个Test类的实例,但在GCC中,这段代码会发生语法错误,无法通过编译。求教GCC下的替代做法。 模板 实例化 GCC
[解决办法]
g++ 是正确的,标准禁止 explicit instantiation 出现在非 namespace scope.
楼主说说想干什么吧,也许有其他替代方案呢,比如这样?

template <class T>
class Module : protected ModuleInstance<T>
{
};

读书人网 >C++

热点推荐