用asio演绎C ++ 11类型

时间:2013-02-10 10:20:07

标签: c++ boost-asio typedef

我正在使用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演绎做了不同的事情?还是一个提升配置问题?

1 个答案:

答案 0 :(得分:6)

basic_waitable_timer课程可以与std::chronoboost::chrono一起使用。在最近的g ++上,它默认使用std::chrono。要强制使用boost::chrono,请定义BOOST_ASIO_DISABLE_STD_CHRONO

记录在案here