2013-06-09 7 views
13

私は2014年ごろに一般公開されるC++ライブラリを作成していますので、現在は設計の選択肢があります。 C++ 14でリリースされる非常に便利なツールの1つはstd::optionalです。私はg++/libstdc++のバージョンを知りたいのですが、-std=c++1yを使用することができます。g ++/libstdC++のstd :: optionalの実装ステータス?

+1

私はC++ 14タグwikiにリンクされているMetaディスカッションごとにC++ 1yに変更しました。最終的なドラフトスタンダードがリリースされるまで[タグ:C++ 14]を使用しないと決定しました。 – chris

+1

参照実装を使用したい人は、[ここ](https://github.com/akrzemi1/Optional/)です。 – PeterT

答えて

14

std::optionalは、最終的なC++ 14標準には含まれていないため、-std=c++1yでは使用できません。 GCC 4.9には、std::experimental::optionalが含まれ、-std=c++1yで使用できます。

std::optional-std=c++1z、すなわちC++ 17が含まれます。

オリジナルの答え(2013年6月):それは、現在実装されていないのです

は、GCCのトランク内のC++ 14個の機能のステータスをhttp://gcc.gnu.org/ml/libstdc++/2013-06/msg00032.htmlを参照してください。

いつ実装されるかは、誰かがボランティアの仕事をしたときに依存するため、予測することは不可能です。

私はを期待しています。 GCC 4.9はC++ 14の直前にリリースされる予定ですが、保証はありません。 GCC 4.9(GCC Subversionトランク)とは異なり、__cplusplusマクロの値は-std=c++11-std=c++1yと同じですので、GCC 4.8の場合は、-std=c++1yの機能を選択的に有効にする方法はありませんのみ。

+4

"なぜこれを頼むの?" - だから、答えを探している人はそれを見つける! –

+5

これは、gccで 'std :: optional'が動作しなかった理由を調べていたとき、Googleのトップヒットでした!だから私はそれが頼まれてここで答えられてうれしいです。 –

+0

gcc-helpリストでトップヒットになっていた質問がある場合。とにかく、この回答は昨日まで間違っていました。なぜなら、C++ 17までは 'std :: optional 'なんてなかったからです。だから最近までコンパイラではうまくいきませんでした。 –

関連する問題