我编写了一段通用代码,它接受一组std::function
作为参数。
void algorithm(function f, function g,...) {
...
f(...)
...
g(...)
....
}
函数f可以从一组函数(f1,f2,...)中选择,g可以从一组具有相同签名的函数(g1,g2,...)中选择。有没有一种方法可以为多个参数集自动编译algorithm
多次?
因此,一个版本algorithm_f1_g2
编译为f=f1
和g=g1
等等。
我已经尝试过使用宏,但我没有得到很远。
PS:我真的希望这种通用的行为 * 在编译时 *,最大的速度。
2条答案
按热度按时间oug3syen1#
既然你可以将函数限制在一些预定义的集合中(这意味着我们不必担心支持函数指针或任意函数),你可以将
algorithm
实现为带有函数指针参数的function template:可用作
可选地,您甚至可以为特定的专门化命名。比如说,
f2uvfpb92#
你可以使用function template来实现:
然后,当您在代码中添加对
algorithm
的任何调用时,编译器将使用您在生成的代码中提供的参数为模板创建一个示例(一个 actual 函数):