模板函数声明为void - 代码不起作用?

时间:2018-02-09 12:04:23

标签: c++ templates

set SEARCH_PATH to test_spect;

我收到以下错误:

  

错误:变量或字段' foo'宣布无效

     

错误:预期')'之前' a'

     

错误:预期')'之前' b'

     

在功能' int main()':   错误:' foo'未在此范围内声明

2 个答案:

答案 0 :(得分:4)

模板中的TU不是类型。您需要将其更改为:

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

答案 1 :(得分:2)

模板参数可以是整数,例如:

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;
}