bugfix> c++ > 投稿

sys_secondsを取得するにはどうすればよいですか? Ubuntu20.04で/ usr/bin/c ++を使用して、次のスニペットをコンパイルします。

RCLCPP_WARN_STREAM(get_logger(), "Time: " << std::chrono::sys_seconds(time_.seconds()));

次のエラーが発生します:エラー:「sys_seconds」は「std :: chrono」のメンバーではありません。

c ++の出力は次のとおりです。

c++ (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0

による:https://en.cppreference.com/w/cpp/chrono/system_clock によると、c ++ 20には名前空間sys_secondsが必要です。https://en.cppreference.com/w/cpp/compiler_support c ++ 9はc ++ 20をサポートします。しかし、ファイル/ usr/include/c ++/9/chronoを確認すると、c ++ 11バージョンしか表示されません。 CMakeLists.txtに次の行を設定して、c ++ 20でコンパイルしていることを確認します。

set(CMAKE_CXX_STANDARD 20)

不足しているc ++ 20 std libを取得するにはどうすればよいですか?

回答 1 件
  • according to https://en.cppreference.com/w/cpp/compiler_support c++9 supports c++20

    それはリンクされたページが言っていることではありません。システムでは、c ++はデフォルトでg ++にリンクされています。リンク先のページにはいくつかC ++ 20機能はGCC9に実装されていますが、多くの機能は実装されていません。

    How can I get the missing c++20 std lib?

    そのライブラリを実装した言語実装をインストールする。

あなたの答え