web-dev-qa-db-ja.com

C ++の概念(「concepts lite」)をサポートするgccを構築するにはどうすればよいですか?

C++標準委員会は、概念拡張用のTS(技術仕様)「プログラミング言語-概念用C++拡張」に取り組んでいます。 N4377 は、このドキュメントの最新バージョンです。 C++標準機能に含めるには、理想的には公にアクセス可能なシステムに実装することが求められます。

私は concept-gcc を知っていますが、上記の概念提案(口語的にConcepts Liteと呼ばれます)は異なります。コンセプトブランチがあると聞いて、Origin/asutton/c++-concepts from gcc 's gitミラーですが、コンパイルされませんでした。上記の[ドラフト] TSで指定されているバージョンのgccサポートコンセプトをビルドして使用するにはどうすればよいですか?

40
Dietmar Kühl

Andrew Sutton氏によると、Concepts Liteのgitミラーは完全に古くなっており、使用すべきではありません。 gcc の「concepts-lite」を実装するためのsvnリポジトリーに概念ブランチがあります(放棄されたC++に概念を追加するC++ 11以前の試みがありましたが、概念を追加する新しい試みC++への移行は、名前概念liteを使用して開始されました)。ビルドするのはかなり簡単です(最近のgccと、それに依存するパッケージがすでにインストールされていると仮定します。渡すことができる他のオプションについては、gcc installの説明を参照してください。明示的にconfiguregmpmpc 、および mpfr がインストールされている場所):

cd <suitable-directory>
svn checkout svn://gcc.gnu.org/svn/gcc/branches/c++-concepts
mkdir build-concepts
cd build-concepts
../c++-concepts/configure --prefix=<concept-gcc-root> --disable-bootstrap --enable-languages=c,c++
make -j8
make install

完全に明白ではないのは、実際にどのようにuse概念を使用するかです:オプション-fconceptsは存在しますが、無条件に有効化の概念とは異なる何かを行うようです-ライト。代わりに、コンセプトを有効にしてコンパイルする場合は、-std=c++1zオプションを使用します。

27
Dietmar Kühl

Fri、7 Aug 2015 01:44:49 -0400(05:44 +0000) の概念のサポートがgccのトランクにマージされました。

それ以降のビルドを使用すると、-std=c++1zフラグを使用して概念サポートを有効にすることができます。

Gcc 6.1(2016年4月27日)以降、C++ 17に含まれる可能性が低いため、コンセプトは-fconceptsによって有効になり、-std=c++1zから削除されました。 (下のコメントの@BruceAdams経由)