我正在尝试创建一个运行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();
答案 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));