以下代码段不能为我编译:
#include <iostream>
#include <boost/thread.hpp>
int main(int argc, char* argv[])
{
boost::thread thread(
[]() {
std::cout<<"hello";
}
);
}
错误:
no matching function for call to ‘boost::thread::thread(main(int, char**)::<lambda()>)’
我觉得我在这里犯了一个非常愚蠢的错误,但它已经有一段时间了,我仍然找不到它。
答案 0 :(得分:3)
您需要通过引用捕获io_service
以获取上述代码片段进行编译:
void start_thread(boost::asio::io_service &io_service)
{
boost::thread tcp_thread(
[&io_service]() { // <-- you missed a & here
io_service.run();
}
);
}
请注意,io_service
未实现复制语义。