2

私はを使用してboost::asio::steady_timer _timerいますが、-std = c ++ 11フラグを使用すると、コンパイラは次の場所でタイプを変換できないというエラーを報告することがわかりました。

boost::asio::steady_timer::time_point now() {
    return boost::asio::steady_timer::clock_type::now();
}

次の場所にoperator+()の一致関数がありません:

_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の推論について何か違うことをしますか?またはブースト構成の問題?

4

1 に答える 1

5

basic_waitable_timerクラスはまたはで動作できstd::chronoますboost::chrono。最近のg++では、std::chronoデフォルトで使用されます。を使用して強制するboost::chronoには、を定義しますBOOST_ASIO_DISABLE_STD_CHRONO

これはここに文書化されています

于 2013-02-10T10:45:11.923 に答える