[英]C++ template with default parameters
我嘗試在模板中使用默認參數,如下所示
#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的函數模板中不得使用默認模板參數
為什么會這樣?
我從函數功能模板的 Stack Overflow問題Default template arguments中提取了此答案:
引用C ++模板:完整指南(第207頁):
最初將模板添加到C ++語言時,顯式函數模板參數不是有效的構造。 始終必須從調用表達式中推導函數模板參數。 結果,似乎沒有令人信服的理由允許默認函數模板參數,因為默認值總是會被推導的值覆蓋。
閱讀堆棧溢出問題以了解更多信息。 注意:函數模板C ++中的默認參數是gnu ++ 0x中的新功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.