1. ホーム
  2. c++

[解決済み] モダンC++の実験的機能は、長期プロジェクトに信頼できるか?

2023-03-15 02:35:43

質問

現在 C++11/14 を使用しているプロジェクトがありますが、そのプロジェクトでは次のようなものが必要です。 std::filesystem のようなものが必要ですが、これは C++17 でしか利用できないため、現在それを使用する機会がありません。しかし、私の現在のコンパイラーでは、それが std::experimental::filesystem . のようなものを将来的に追加できると仮定して、実験的な機能を使用するのは良いアイデアでしょうか?

#ifdef CXX17 //if this is C++17
std::filesystem::something ...;
#else
std::experimental::filesystem::something ...;
#endif

私の懸念は

1. すべての準拠したコンパイラが同じ実験的機能を持つことは保証されていますか?

2. 実験的な機能は、信頼性を失わせるような大きな変更をしがちですか?

もしかしたら、もっと疑問に思うことがあるかもしれません。なぜそれらを使うべきなのか、使わないべきなのか。新しいプロジェクトに戸惑い、何を決めればいいのかわからない。

どうすればいいのか?

<ブロッククオート
  1. すべての準拠コンパイラが同じ実験的機能を持つことは保証されていますか?

いいえ、実験的機能はオプションです。

  1. 実験的な機能は、信頼性を失うような大きな変更が起こりやすいのですか?

はい。C++委員会が機能の放棄を決定することもありますし、標準化の過程で不具合が出て、機能を変更せざるを得なくなることもあります。

一般的に、実験的な機能に依存するのは良い考えとは言えません。実験的な機能とは、まさにその言葉が示すとおり(つまり、実験すること)です。