我有一组函子,用于计算对象上范围上的特定内容。本质上,每个函子都实现了operator()。Functor f = Functor() ) // calculate stuff for "foo" using functor "f"现在我想将函子的选择委托给我的程序的用户,所以我决定创建一个函子工厂这就是我陷入困境的地方:我不
C++也允许虚拟函子,但这本质上是带有额外间接方向的闭包情况。)我想出四种方法来处理这个问题:
C++ (98)方法,它强制被叫者选择一个调用站点的形状(通过形式参数类型:虚拟函子、函数指针或非虚拟函子),或者使用模板删除单独的编译,有效地指定下面的解决方案#2重载:编译器可以对map和所有其他高阶函数执行多个实例化,并使用适当的</