考虑以下假设的代码片段:
template<?? function>
void loop() {
for(int i =0; i < 10000; ++i ) {
function(i)
}
}
//...
void print(int i) {
std::cout << i << '\n';
}
//...
loop<print>();
可以在C++中实现这样的功能吗?据我所知,函数指针和通用函数对象可以通过模板参数进行传递 (就像在std::sort中一样),但是否有一种方法可以使得在运行时不需要传递任何实际对象,并且对"print"的调用是完全直接的(即没有间接性)?也就是说,通过在模板中“按值”传输实际函数,就像使用
template <int i>
或其他一些整数类型来传递整数一样。
typename Function
和Function function
参数,这样就可以只写loop(print)
。 - chris