C ++确定auto的类型并传递给函数模板

时间:2014-04-09 05:33:26

标签: c++ c++11 auto

我有一个功能:

template<typename T> f(T x) { do something with x; }

我想将此自动指针传递给函数

auto x = ...
f<???>(x)

我还有这样做吗?

2 个答案:

答案 0 :(得分:5)

只需将其称为

即可
auto x = ...
f(x)

模板化函数会根据您传递的参数自动推断类型。实际上,这是调用模板化函数的首选方法。

如果你真的想明确地给它类型(我不建议这样做),你可以使用decltype:

auto x = ...
f<decltype(x)>(x)

这是一个最小的证据:http://coliru.stacked-crooked.com/a/d01070d90c0b9803

答案 1 :(得分:3)

编译器应该足够聪明以确定类型,所以

auto x = ...
f(x);

或者您可以使用decltype

auto x = ...
f<decltype(x)>(x);