簡體   English   中英

模板函數聲明為void-代碼不起作用?

[英]Template function declared as void - code doesn't work?

#include <iostream>
#include <string>

template<int T, int U>
void foo(T a, U b)
{
    std::cout << a+b << std::endl;
}

int main() {
    foo(2,4);
    return 0;
}

我收到以下錯誤:

錯誤:變量或字段'foo'聲明為空

錯誤:預期在“ a”之前的“)”

錯誤:預期在“ b”之前的“)”

在函數'int main()'中:錯誤:在此范圍內未聲明'foo'

模板中的TU不是類型。 您需要將其更改為:

template<typename T, typename U>
void foo(T a, U b) {
}

模板參數可以是整數,例如:

template<int A, int B>
void bar()
{
    std::cout << A+B << std::endl;
}

但是,似乎您想根據參數的類型而不是整數值對方法進行參數化。 正確的模板是這樣的:

template<typename T, typename U>
void foo(T a, U b)
{
    std::cout << a+b << std::endl;
}

int main() {
    bar<2,4>();
    foo(2,4);     // note: template parameters can be deduced from the arguments
    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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