我正在试图找出一种方法来传递lambda作为函数替换。
通常情况下,我会这样做:
InputExampleToMe( ... );
static int ExampleFunction( void *one, int two, int three, void *four )
{
static_cast< std::string * >( four )->append( static_cast< char * >( one ), two * three );
return two * three;
};
/* ... */
int main( )
{
InputExampleToMe( ExampleFunction );
}
我试图看看是否有办法声明静态lambda作为参数传递。像这样:
InputExampleToMe( ... );
/* ... */
int main( )
{
InputExampleToMe( [ ]( void *one, int two, int three, void *four )-> static int{ static_cast< std::string * >( four )->append( static_cast< char * >( one ), two * three ); return two * three; }; );
}
谢谢!
答案 0 :(得分:0)
无状态lambda可以转换为具有相同签名的函数指针。
#include <string>
void InputExampleToMe(int (*pf)(void*, int, int, void*));
auto ExampleFunction = []( void *one, int two, int three, void *four ) -> int
{
static_cast< std::string * >( four )->append( static_cast< char * >( one ), two * three );
return two * three;
};
/* ... */
int main( )
{
InputExampleToMe( ExampleFunction );
}
警告:垃圾进入,垃圾出来。