问题描述
在C ++中,我们可以很容易地定义模板函数参数,如this问题中所示。但是,这仅允许具有定义的参数列表和返回值的函数。
我们可以使这些类型的模板参数如下:
template<typename R,typename P,R(*Func)(P)>
R proxy_func(P arg)
{
// do some stuff...
R&& res{ Func(std::forward(arg)) };
// do some more stuff...
return res;
}
但是,这里我们仍然限于固定数量的参数。
不会进行如下尝试(至少在MSVC 19.24.28315上如此),因为“模板参数'Func'无法使用,因为它遵循模板参数包并且无法从函数参数中推导'proxy_func'“ 。
template<typename R,typename... P,R(*Func)(P...)>
R proxy_func(P... args)
{
// do some stuff...
R&& res{ Func(std::forward(args)...) };
// do some more stuff...
return res;
}
那么允许将任意函数用作模板参数的选项有哪些,并且-同样重要的是-允许将其 parameters 用作其使用的函数模板的参数(例如在上面的proxy_func
中)?理想情况下,我将能够使用任何函数(最好是单)模板参数proxy_func
来调用Func
,并能够应用其(proxy_func
)Func
的参数。
编辑:我对使用功能- instance 作为模板参数特别感兴趣(例如,允许proxy_func
的模板实例化可应用编译时优化基于各个Func
)。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)