我有一个功能:
template<typename T> f(T x) { do something with x; }
我想将此自动指针传递给函数
auto x = ...
f<???>(x)
我还有这样做吗?
答案 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);