我想使用一种类型创建一个模板,并传递一个具有包含该类型的模板参数的函数。
这是我目前拥有的:
#include <iostream>
void fooRef(int& ref) { std::cout << "In ref" << std::endl; }
void fooPtr(int* ptr) { std::cout << "In ptr" << std::endl; }
template<typename T, typename F>
void Print(T arg, F func) {
//DoABunchOfStuff();
func(arg);
//DoSomeMoreStuff();
}
int main() {
int x = 5;
int& ref = x;
Print<int*, void(*)(int*)>(&x, &fooPtr);
Print<int&, void(*)(int&)>(ref, &fooRef);
}
这行得通,但我觉得函数的调用者可能会有一些额外的冗长。理想情况下,我希望调用看起来像:
Print<int*, fooPtr>(ptr);
Print<int&, fooRef>(ref);
有没有办法简化对 Print 函数的调用?