考虑以下两个函数模板
template<class T> void g(std::vector<T>&) {}
template<class T> void g(std::list<T>&) {}
以及中间函数
template<class Fct, class Container> void h(Fct&& f, Container& c)
{
f(c);
}
我该怎么称呼
h
以显式实例化
g
(就像
this answer
)是吗?我试过这些
std::vector<int> vec;
h(g<void(std::vector<int>&)>, vec); // Error, can't deduce template paramter Fct
h(g<void<int>(std::vector<int>&)>, vec); // Same problem
但现在我缺乏尝试其他语法的想象力(我知道我可以用lambda或函数对象包装调用,但这不是我想在这里做的)。谢谢你的建议!