使用匿名或lambda函数连接到Boost Signals2信号

Guy*_*Guy 2 c++ events boost signals

我正在尝试执行以下操作,以便从增强信号接收字符串并将其发布到显示器.以下语法不正确.

signal<void (const char*)>                      UserMessageEvent;

// connect anonymous boost function to display message box on user message event 
UserMessageEvent.connect(boost::bind(AfxMessageBox, _1));
Run Code Online (Sandbox Code Playgroud)

如果这是C#,我会做以下操作,让我相信我想使用lambda函数在信号的调用类型和AfxMessageBox参数的类型之间进行转换.但是我不清楚如何做到这一点.

UserMessageEvent += (c) => MessageBox.Show((some const char to LPCSTR conversion)c);
Run Code Online (Sandbox Code Playgroud)

有什么建议?

编辑:msvc10给出的错误是错误C2914:'boost :: bind':不能推断模板参数,因为函数参数是模糊的

Tho*_*tit 7

我不知道boost :: bind在默认参数方面的表现如何.

无论如何,这是lambda的语法:

UserMessageEvent.connect( [](const char* message)
{
   // maybe need here a conversion to LPCWSTR ?
   AfxMessageBox(message);
});
Run Code Online (Sandbox Code Playgroud)