谢谢你查看我的问题。我需要一个模板函数来使用可调用对象(如lambda,函数对象,绑定,函数指针和函数)作为参数,就像STL一样,但我真的不知道如何做,并且没有在线资源。
具体来说,我想设计一个函数来遍历我的容器,对于每个元素,它将调用可调用函数来操作元素,就像STL :: for_each()一样。你能举个这样的例子吗?
非常感谢!
答案 0 :(得分:0)
STL使用模板执行此操作。像这样:
template<class CallableObjectType>
void do_stuff(/* other arguments */, CallableObjectType object)
{
// ...
object(arg1, arg2, arg3);
// ...
}
也就是说,它不会尝试强制你的对象可以调用,除非通过调用它。如果对象不可调用,则无法实例化模板,因为object(arg1, arg2, arg3)
无效,因此您会收到错误。如果对象是可调用的,那么它的工作方式就是你所希望的。