- 主题:这个功能是不是只有用宏来写?
函数指针?
template<typename classT, typename argT>
void Invoker(classT& t, int (classT::*memFun)(argT), argT x)
{
(t.*memFun)(x);
}
--
FROM 61.185.195.*
三句一句没懂。
1 用指针会?
2 做成lambda会?
3 编译器inline是对谁inline? 有啥效果?(相比指针)
把Invoker名字改成make_lambda不行吗?
template<typename classT, typename argT>
auto make_lambda(classT& t, int (classT::*memFun)(argT))
{
return [](argT x) noexcept { return (t.*memFun)(x); };
}
【 在 ziqin 的大作中提到: 】
: 就是不想用指针啊,希望做成lambda,然后由编译器自动inline
:
--
修改:DoorWay FROM 61.185.195.*
FROM 61.185.195.*
要想支持任意函数,返回值多种类型,参数列表是变的话,得上变参那一套. 得查查改改。记不住语法。
搜一下吧,感觉是个成熟问题,covert any (member) function to lambda
--
FROM 61.185.195.*
不懂。
4楼的模板满足你的要求不?
【 在 ziqin 的大作中提到: 】
: 这些函数会被高频呼叫,做成lambda inline比用函数指针少一次指针引用,在高频呼叫的时候,大概能快10%-15%
:
--
FROM 61.185.195.*
解决了吗?
【 ziqin 的大作中提到: 】
: 要批量写一批函数
: auto make_lambda()
: {
: ...................
--
修改:DoorWay FROM 61.185.195.*
FROM 61.185.195.*