我有一个模板:
template<typename T>
void testFuction(int(*testFunc)(CallBack, void *, T *)) {
// define CallBack callback, void* param1, T* param2
...
testFunc(callback, param1, param2);
}
虽然有效,但看起来很糟糕,我想做类似的事情:
template<typename T>
// using TestFunc<T> = std::function<int(CallBack, void *, T *)>
void testFuction(TestFunc<T> testFunc)
// define CallBack callback, void* param1, T* param2
...
testFunc(callback, param1, param2);
}
但是它不起作用。
某些身体可以帮助我吗?我还重载了许多类似的函数,并添加了一些参数,它们看起来很丑陋。我想一次定义TestFunc<T>
,然后在模板函数中再次使用它。
您可以为模板化函数指针提供类型别名,如下所示
template<typename T>
using FunPointerT = int(*)(CallBack, void*, T*);
template<typename T, typename... Args>
void testFuction(FunPointerT<T> funcPtr, Args&& ...args)
{
testFunc(std::forward<Arg>(args)...);
}