[英]redefinition of default argument for class<template-parameter-1-2>
[英]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.