簡體   English   中英

具有默認參數的C ++模板

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM