【发布时间】:2018-02-27 07:05:44
【问题描述】:
我必须在这里遗漏一些明显的东西,因为这真的让我感到惊讶。
以下代码给了我错误:error: missing template arguments before ‘a’
template<int n=0>
class A {};
...
A a;
...
为什么必须实例化具有 1 个使用默认值声明的参数的模板并为其指定值?
有人可以引用标准吗?
【问题讨论】:
-
你不需要指定它:
A<> a; -
@W.F.有趣,你知道为什么吗?。
-
同样你不能用没有大括号的默认参数调用函数。
-
@imreal
A不是一个类,它是一个模板。声明一个模板的变量是没有意义的——你需要一个特定的实例化。<>是您尝试实例化模板的编译器的线索,就像 W.F.指出()是您尝试调用函数的线索(即使您没有传递任何参数)。