【发布时间】:2012-05-17 14:02:58
【问题描述】:
我尝试在我的模板中使用默认参数,像这样
#include <iostream>
using namespace std;
template <typename S, typename T=int>
S myadd(T a, T b)
{
S tmp = a + b;
return tmp;
}
int main()
{
int a = 1, b = 2;
float i = 5.1, j = 5.2;
cout << myadd<int, int>(i, j);
cout << myadd<float>(a, b);
return 0;
}
然后是 g++ myadd.cpp
显示错误:
没有 -std=c++0x 或 -std=gnu++0x 的函数模板不能使用默认模板参数
为什么会这样?
【问题讨论】:
-
该错误消息中有什么你不明白的地方?你是怎么编译的?
-
你不知道为什么?原因是“没有 -std=c++0x 或 -std=gnu++0x 的函数模板不能使用默认模板参数”。
-
只是一个疯狂的猜测,但你是用 -std=c++0x 还是 -std=gnu++0x 编译?
-
在这种情况下为什么要使用默认 T? T可以从参数的类型中扣除。
-
@LuchianGrigore 我只是在终端中使用 g++ 和 g++ myadd.cpp。