我在 Google 上找不到任何关于此的信息,在以下示例中:
#include <iostream>
class Default
{
public:
void Print()
{
std::cout << "This is a message\n";
}
};
template <class C = Default>
class Template
{
public:
static void Test()
{
Default oDefault();
}
};
int main()
{
return 0;
}
代码无法编译并出现以下错误:
在静态成员函数'static void Template::Test()'中:19:22:错误:没有 -std=c++0x 或 -std=gnu++0x 的函数模板中不能使用默认模板参数
问题是它不喜欢出现在该行的括号,我不明白为什么。如果我删除括号代码编译就好了。此外,如果我删除模板声明(第 13 行),它也编译得很好。这是一个错误还是关于这种情况的某个地方有什么规则?
我正在使用 g++4.6.1(gcc 版本 4.6.1(Ubuntu/Linaro 4.6.1-9ubuntu3))