Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;带有默认参数的模板_C++_Templates - Fatal编程技术网

C++ C++;带有默认参数的模板

C++ C++;带有默认参数的模板,c++,templates,C++,Templates,我尝试在模板中使用默认参数,如下所示 #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 <&l

我尝试在模板中使用默认参数,如下所示

#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;
}
#包括
使用名称空间std;
模板
S myadd(T a,T b)
{
S tmp=a+b;
返回tmp;
}
int main()
{
INTA=1,b=2;
浮点数i=5.1,j=5.2;

我从StackOverflow问题中提取了这个答案:

引用C++模板:完整指南(第207页):

模板最初添加到C++语言时,显式 函数模板参数不是有效的构造。函数 模板参数必须始终可以从调用中推断出来 因此,似乎没有令人信服的理由 允许默认函数模板参数,因为默认值 始终由推导值覆盖


注意:函数模板C++中的缺省参数是GNU+0x.</P>中的一个新特性。在错误消息中你不理解什么?你尝试编译什么?你不知道为什么?为什么是因为“在没有-std=c++0x或-std=gnu++0x的函数模板中不能使用默认模板参数”。这只是一个猜测,但您是使用-std=c++0x或-std=gnu++0x编译的吗?在这种情况下为什么需要默认的T?T可以从参数的类型中扣除。@LuchianGrigore我只是在终端中使用g++和g++myadd.cpp。