g++
ABI の変更による標準 C++ ライブラリへの重大な変更を行わずに、C++11 の新しい言語機能を有効にする方法はありますか?
-std=c++11
コンパイル フラグを追加すると、言語とライブラリの両方の機能を有効にするように指示されますが、この方法で作成されたオブジェクト ファイルは、別の設定g++
を使用したオブジェクト ファイルと安全にリンクできません。-std=
右辺値参照、ムーブ コンストラクター (自分のクラス用)、およびauto
C++03 ライブラリにリンクされたコード内のキーワードなどの言語拡張機能を使用できるようにしたいと考えています。
編集:
g++
その C++11言語機能を有効にすることに興味がありますが、古い C++03 ライブラリに対して解析、コンパイル、およびリンクしたいと考えています。標準ライブラリの C++11 バージョンを使用したくありません。つまり、私自身のコードではauto
、range foreach コンストラクト、右辺値参照などを使用できますが、標準 C++ ライブラリの新しい C++11 機能 (または右辺値など) を使用することはできませんstd::move
。 -ref STL コンテナーの機能強化。標準ライブラリの C++11 バージョンが不要な理由は、さまざまなオブジェクトのレイアウトが変更されたためです。そのため、標準ライブラリの異なるバージョンを期待する 2 つのオブジェクト ファイルを同じバイナリにリンクすることは無効です。