用asio进行C++11类型的推导

C++11 type deduce with asio

本文关键字:类型 C++11 asio 进行      更新时间:2023-10-16

我正在使用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_pointboost::chrono::steady_clock::time_point

这是可以的。然而,它们是一样的,在没有0x或11模式的g++中工作得很好。

C++11是否对typedef推导做了一些不同的事情?或者是升压配置问题?

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