boost不接受匿名函数作为任何东西的输入

时间:2015-06-19 18:44:01

标签: c++ boost anonymous-function boost-thread

以下代码段不能为我编译:

#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()>)’

我觉得我在这里犯了一个非常愚蠢的错误,但它已经有一段时间了,我仍然找不到它。

1 个答案:

答案 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未实现复制语义。