11

C++ コンパイラ サポートを見ると、GCC 5.0+ で の時間指定されていないバージョンstd::shared_mutexが利用できるようです。ただし、 を使用しgcc version 5.3.0 20151204 (Ubuntu 5.3.0-3ubuntu1~14.04)てコンパイルしても-std=c++1z、共有ミューテックスの単純な初期化は次のようになります。

error: ‘shared_mutex’ in namespace ‘std’ does not name a type
        std::shared_mutex mutex_;

いいえ、私はすでに適切なヘッダーを含めています: #include <shared_mutex>.

存在しないように見えるため、適切なヘッダーを見つけることができません。実際には、リンカは(C++14 標準のような)/usr/include/c++/5/shared_mutexの実装のみを含むライブラリ locate at を使用します。std::shared_timed_mutex

にリポジトリを追加し、それらのビンを適切にセットアップするためにppa:ubuntu-toolchain-r/test使用して、gcc-5 と g++-5 をインストールしました。update-alternatives

最新の C++17 標準を使用してコードを正しくコンパイルするためにできることはありますか? -std=c++1zばかげた質問かもしれませんが、既にサポートされているはずなのに、使い始めるのは時期尚早ですか? サポートされているからですよね?

4

2 に答える 2