7

<unordered_map>失敗してファイルが存在しないと言うようなものを含めようとすると、含めようとすると機能し<tr1/unordered_map>ます。ただし、c++03 にも存在するインクルード ファイルが見つかり、c++11 です (<vector>移動コンストラクターがあるように)。また、<thread>.
tr1 で新しく追加されたものはすべて tr1 フォルダーに入れられ、それ以外はすべて通常のインクルードに入れられたようです。
なぜこうなった?ソースファイルを変更せずに修正する方法はありますか? すべてが tr1 名前空間にあるため、
受け渡しは機能しません。 私が使っているコンパイラは-I/path/to/include/tr1

Apple clang version 3.0 (tags/Apple/clang-211.10.1) (based on LLVM 3.0svn)
4

3 に答える 3

11

TR1 (テクニカルレポート 1) は規格ではなく、単なるレポートです。これは、委員会がこの分野に関心を持っていることを人々に知らせる公式の方法です。どの tr1 実装も、将来の標準を改善する目的でフィールド フィードバックを得ることを目的とした実験的なリリースです。

Apple の Xcode 4.2 を使用すると、ビルド設定で "libc++" を検索し、C++ 標準ライブラリとして "libc++" を選択することで、ほぼ完全な C++11 ライブラリを選択できます (これはデフォルトではありません)。

または、コマンド ラインを使用する場合は、-stdlib=libc++ を使用できます。

libc++ には tr1 コンポーネントは含まれていませんが、 を除くすべての C++11 が含まれています<atomic>

于 2011-10-24T13:09:38.930 に答える
7

次の両方のパラメーターを clang++ に追加します。

-std=c++11 -stdlib=libc++ 
于 2013-08-21T21:07:16.797 に答える
1

はい、コンパイラが異なれば、TR1ヘッダーの扱いも異なります。たとえば、GCCはあなたが経験したのと同じことをしますが、MVSはそれを受け入れます<unordered_map>。これを回避する1つの方法はboost/tr1/unordered_map.hpp、クロスプラットフォームまたは複数のコンパイラのコンパイルが必要な場合に使用することです。

于 2011-10-24T10:58:58.687 に答える