我正在使用boost::asio::steady_timer _timer
,但我发现如果使用-std = c ++ 11标志,编译器将报告无法转换类型的错误:
boost::asio::steady_timer::time_point now() {
return boost::asio::steady_timer::clock_type::now();
}
并且运算符+()的匹配函数没有:
_timer.expires_at(now()+boost::chrono::milliseconds(100));
似乎编译器无法在c ++ 11模式中推断出正确的类型。但我使用
boost::asio::basic_waitable_timer<boost::chrono::steady_clock> _timer;
并更改boost::asio::steady_timer::time_point
至
boost::chrono::steady_clock::time_point
没关系。但是,它们是相同的,并且在没有0x或11模式的g ++中工作正常。
C ++ 11是否对typedef演绎做了不同的事情?还是一个提升配置问题?
答案 0 :(得分:6)
basic_waitable_timer
课程可以与std::chrono
或boost::chrono
一起使用。在最近的g ++上,它默认使用std::chrono
。要强制使用boost::chrono
,请定义BOOST_ASIO_DISABLE_STD_CHRONO
。
记录在案here