2014-03-31 78 views
0

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

环境: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

如何使用lambda表达式?

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

如果你不喜欢用拉姆达,试试这个

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