绑定boost的asio的编译错误

时间:2014-03-31 05:52:06

标签: c++11 boost boost-asio

我正在尝试创建一个运行boost的asio的IO服务的线程。 但是,我得到以下编译错误。有什么办法可以解决吗?

环境:gcc 4.7.2,提升1.54

error: left operand of comma operator cannot resolve address of overloaded function
error: invalid static_cast from type ‘boost::asio::io_service’ to type ‘size_t (boost::asio::io_service::*)() {aka long unsigned int (boost::asio::io_service::*)()}’

代码:

boost::asio::io_service oSer;
    std::thread t(std::bind(static_cast<size_t (boost::asio::io_service::*)()>(&boost::asio::io_service::run, oSer)));
    t.join();

1 个答案:

答案 0 :(得分:0)

如何使用lambda表达式?

std::thread t([&oSer](){ oSer.run(); });

如果你不喜欢使用lambda,试试这个

std::thread t(std::bind(static_cast<size_t(boost::asio::io_service::*)()>(&boost::asio::io_service::run), &oSer));