16

ここでGCC 4.9.0 リリースの変更を見ているときに、次の内容を読んでうれしい驚きを覚えました。C++ の「新しい言語と言語固有の改善」セクションの下:

G++ は、N3889: Concepts Lite Specificationの §4.1.2 および §5.1.1 で指定されている制約のないジェネリック関数をサポートしています。簡単に言えば、 auto は、一般的なラムダと同様に、暗黙的な関数テンプレート パラメーターを導入するために、任意の関数宣言子のパラメーター宣言で型指定子として使用できます。

// the following two function declarations are equivalent
auto incr(auto x) { return x++; }
template <typename T>
auto incr(T x) { return x++; }

GCC 4.9.0 をビルドしたところ、最初のテストは期待どおりに機能しました。Concepts Lite は今後の C++14 仕様の補助的なものであり続けると思います。「制約のないジェネリック関数」が C++ の一部になる計画はありますか?

4

1 に答える 1

5

最新のドラフト標準N3936を見ると、これは C++14 DIS にかなり近いものですN3937(これはN3938でカバーされています)。4.1.2のおよび5.1.1のセクションで指定された言語は含まれていませんN3889

したがって、C++14 の場合、答えはノーのように見えますが、Bjarne Stroustrup は、concepts lite はテクニカル レポートになると述べていますISO cpp の Current Status ページで、テクニカル レポートの詳細を確認できます。

C++14 を超えて、委員会は約 2017 年に別の C++ 標準を作成することを検討しています。それまでの間何も起こらないという意味ではありませんが、現在 8 つの個別の技術仕様が進行中であり、そのうちのいくつかは順調に進んでいるためです。 2014 年と 2015 年に発行される予定です。2012 年から、委員会は「分離」モデルに移行しました。このモデルでは、主要な作業が標準自体から独立して進行し、個別の TS として提供されます。ベンダーはこれらを実装することを選択でき、コミュニティは各機能の std::experimental バージョンで経験を積むことができます。これにより、実際の C++ 標準の将来のバージョンに正式に含まれる前に、経験に基づいて各機能の設計を学習および調整できます。

于 2014-06-15T18:06:18.997 に答える