我知道如果所述指针作为参数传递给我的模板函数,编译器可以推断出函数指针的类型,但我想将我的函数作为非类型模板参数传递并支持任意参数的数量和类型。
在精神上,我想做的是:
template <Ret (*Fun)(Args...), typename Ret, typename... Args>
Ret do_something_exciting(Args&&... args)
{
// exciting things go here
return Fun(std::forwards<Args>(args)...);
}
[...]
int some_arbitrary_function(double x, double y);
[...]
do_something_exciting<&some_arbitrary_function>(3.14, 9.82);
由于Fun
在 Ret
和Args
之前声明了,这显然失败了,但是如果我之后宣布Fun
Ret
和Args
,我不能首先使用类型扣除。
我是否尝试过不可能或者可以让它发挥作用?