繁体   English   中英

默认模板参数的非冲突重新定义

[英]Non-conflicting redefinition of default template argument

我知道(这里是一个来源)只要两个定义不冲突,就可以重新定义默认模板参数。 因此,我正在尝试使用 g++ 5.3.1 编译以下内容:

template <class = int> class A; // forward declaration
template <class T = A<>> struct B {};

template <class T = int> class A {}; // "= int" here is for clarity

int main() { return 0; }

编译器抱怨:

错误:重新定义“class T”的默认参数

我的理解哪里不对?

您不能重新定义默认模板参数。

当你写template <class T = int> class A {}; 您正在重新定义此默认参数,这就是您收到错误的原因。 您必须选择一个位置来放置该默认参数(前向声明或实际定义)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM