問題タブ [libc++]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1453 参照

c++ - libc++でのC++11標準サポートの状態?

libc++でのC++11標準サポートに関する優れた情報源はありますか?そのWebサイトには、標準の98%がサポートされていると書かれていますが、他の2%がどのような機能であるかを知りたいです。

libstdc ++のこのリストに似たものがあればいいでしょう:http: //gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.2011

0 投票する
2 に答える
2836 参照

c++ - C++11ライブラリ機能の確認

標準ライブラリの特定のC++11機能の存在をチェックする良い方法は何ですか。

コンパイラー機能については、(IMHO)メジャーコンパイラー(現時点ではVC ++gccclang 、おそらくIntel)のコンパイラーバージョンを確認する方法をとったところです。これは最善かつ最も柔軟なアプローチではありませんが、わかりません。本当に素晴らしいマクロを持っているclangを除いて、まだもっと良いものの。__has_feature

ただし、コンパイラに厳密に結合されていないライブラリ機能の場合はさらに悪化します。現時点では、VC ++のコンパイラバージョンをチェックするのと同じアプローチを使用したいと思います(独自のライブラリを使用していると仮定すると、非常に簡単です)。clangの場合、少なくとも__has_include大規模なヘッダーベースのクエリに使用できます。それ以外は、定義されている場合はの値を確認することをお勧めしますが、現在のバージョンがサポートしている機能以外に、どの特定のlibstdc++__GLIBCXX__バージョンがどの機能を導入したかについての情報を見つけることができません。

洗練された構成手順やサードパーティのライブラリを使用せずにヘッダーのみのライブラリで使用したいので、メソッドはプリプロセッサチェックなどに保持する必要があります(もちろん、ブーストはサードパーティです)。

  1. それで、それらの(かなり狭い)条件下で特定のC++11ライブラリ機能をチェックする私の可能性は何ですか。たぶん、宣言されている特定の関数やタイプの規模でさえ?

  2. コンパイラまたはライブラリのバージョンを確認することが依然として最善のアプローチである場合、特定のバージョンのlibstdc ++(およびおそらく他の重要な機能、おそらくlibc ++ )でサポートされる特定のC ++ 11機能に関する詳細情報はどこにありますか?

現時点でFWIWは<cstdint>、C ++ 11<cmath>関数とstd::hashに関心がありますが、これは変更される可能性があり、一般的なアプローチではおそらく重要ではありません。

0 投票する
2 に答える
3118 参照

c++ - libc++ 正規表現ライブラリ (C++11) を使用した「行頭」の一致

iheap など、特定の単語で始まるすべての行に一致させたいと考えています。私が間違っていなければ、正規表現 (ECMAScript 構文)"^iheap.*"でうまくいくはずです。しかし、libc++ の正規表現ライブラリを使用して C++11 でこれをテストしたところ、最初の行だけが一致しました。その"^..."ため、行頭ではなく入力の先頭にのみ一致するようです。

次に例を示します。

出力:

これは libc++ のバグですか、それとも何か間違っていますか? ありがとう!

: Mac OS X Mountain Lion と Apple LLVM Compiler 4.0 (基本的には clang 3.1 SVN のスナップショット) を使用しています。

0 投票する
1 に答える
2859 参照

c++ - C ++エラー:「インライン」は関数にのみ表示できます

clang++を使用してOSX10.7でVCMIをコンパイルしようとしています。

Appleのgccが必要なフラグCXX=clang++を認識していないようだったので、でプロジェクトを構成しました。-std=c++0x

それがなければ、clangは見つけることさえできなかったので、私はに追加-stdlib=libc++しました。CXXFLAGS#include <array>

現在私は持っています:CXXFLAGS= -std=c++0x -stdlib=libc++ -Wall -Wextra -Wcast-align -Wpointer-arith -Wno-switch -Wno-sign-compare -Wno-unused-parameter -Wc++11-extensions

問題は、次のエラーが発生することです。

私はこのようなものを見たことがないことを認めなければなりません。これらはlibc++ソースにあります!誰かが原因が何であるか知っていますか?

0 投票する
2 に答える
5247 参照

ubuntu - ubuntu12.04でlibc++を使用するclang3.1、iostreamが見つかりません

ここhttps://launchpad.net/~eudoxos/+archive/llvm-3.1でパッケージバージョンを使用してインストールしたclangを使用してC++プログラムをコンパイルしようとしています。これはコマンドです:

そして、私は結果としてこれを取得します:

ご覧のとおり、正しいインクルードディレクトリ/usr/include/c++/4.6を検索していません。しかし、問題はそれよりも深いと思います。そのディレクトリで検索するように強制しても、次のようになります。

そして、そのファイルはその領域に存在しません。libc ++が欠落しているのではないかと思いますが、専用のlibc ++ ubuntuパッケージが見つからないため、ソースからlibc ++をコンパイルしようとして大混乱を起こす前に(うまくいくとは思えません)、皆さんが助けてくれることを望んでいました。

どうもありがとう!

0 投票する
1 に答える
2021 参照

c++ - Clang、libc++、c++11 で SFML2 アプリケーションを作成します。SFML ライブラリへの未定義の参照

SFML2 アプリケーションの作成で奇妙な問題が発生しています。リポジトリの Clang++ と libc++ を使用しています (どちらも本日更新)。SFML2 も SVN リポジトリから更新されました。Kubuntuの最新バージョンを使用しています。約1か月前に当時の最新のリポジトリで最後に試したときも同じ問題がありました。

C++11 および stdlib のコンパイラに渡すパラメーターは次のとおりです。 -std=c++11 -stdlib=libc++

これが私が呼んでいるものの完全版です:

アプリケーションをコンパイルしようとすると、 Clang からリンク エラーが発生します。

アプリケーションが (現在) 行うことは、RenderWindow を作成することだけです。これは単なるテスト アプリケーションですが、私が使用するほとんどの SFML2 関数では、このようなリンクの問題が発生します。libc++ を使用しない場合、プログラムは完全に正常にコンパイルされます。

私が知る限り、-stdlib=libc++ を含めると、SFML2 ライブラリが正しくリンクされるように SFML2 lib フォルダーが検索されません。

-v コマンドを使用して Clang を呼び出すと、ld 呼び出しは次のようになります。

-stdlib=libc++ を使用しないと...

したがって、私が人々を混乱させた場合: Clang で libc++ を使用すると、最初の ld 呼び出しから上記のエラーが発生します。私がそれを使用しない場合、2 番目の ld 呼び出しは問題なく実行され、アプリケーションは正常に実行されます。

私が libc++ を使用している理由は、C++11 の Threading を使用したいからです。これがないと、コンピュータにある GNU C++ 標準ライブラリから大量のエラーが発生します。エラーリストは膨大で、この問題とは関係がないため、投稿しません。

どうすれば SFML2 の問題を解決できるか、誰にも手掛かりがありますか? 必要がなければ、pthreads ライブラリを使用したくありません。

0 投票する
1 に答える
847 参照

c++ - C ++ 11 std::bindの連鎖呼び出しが機能しない

ネストされた式を呼び出すときに問題が発生しstd::bindます。次のコードは、問題を示しています。libc ++でのコンパイルに失敗しますが、boostで動作します。

バインド式をstd::function(を参照fix1)でラップすると、実行時のポリモーフィズムによってインライン化が無効になるために速度が犠牲になりますが(まだ測定されていません)、問題が解決されます。

バインド式のラップprotect_t(を参照fix2)は、に触発されてboost::protectいますが、バインド式がコピーできないため、libc++を使用したコンパイルは失敗します。std::functionとにかく、なぜそれらをラップするのか不思議に思います。

この問題を解決する方法はありますか?std::bindとにかく何をしているのですか?最初に、問題はC ++ 11標準(ここを参照)によって規定されたバインド式の熱心な評価に関連していると思いましたが、それはここでは問題ではないでしょうか?

0 投票する
1 に答える
373 参照

xcode - GCCとLLVMを使用したC ++でのXcode 4.4 Lionの一貫性のない改行動作

私は何年もの間、次のコードを使用して、cin up から次の改行を含む文字を消費してきました。

次のように、例外をキャッチして cin 状態をクリアした後にこれを呼び出します。

cin からの次の読み取りでは、残りの改行が空白としてスキップされます。

Lion の下で Xcode 4.4.1 に変更したところです。LLVM GCC 4.2 GNU++98、libstdc++ (GNU C++ 標準ライブラリ) を使用すると、これまでと同じように動作します。

しかし、Apple LLVM Compiler 4.0、c++11、libc++ (C++11 をサポートする LLVM C++ 標準ライブラリ) を使用すると、改行の認識に複数の問題があるようです。上記と同じコードでは、ループを満たすために 2 回目のリターン キーストロークが必要です。別の方法でも同じ問題が発生します。

最後に、while ループで cin.get() の代わりに getchar を使用すると、いつものように機能します。

これは libc++ のバグですか? または、Xcode または C++11 で何かを見逃していませんか?

Howard Hinnant への返答として、例外なく何が起こるかを示す小さなテスト ケースを以下に示します。

}

3が保存されるまでintを読み取って保存し、その後、次の改行まで読み取って破棄し、すべてを繰り返すため、3の後のものが入力ストリームから破棄されることがわかります。GNU++98 を使用する Xcode 4.4.1 Lion を使用 || GNU++ 11、libstd ++、次の 2 行を入力すると、それぞれがスペースで終わり、その後に RETURN キーストロークが続くと、期待どおりの結果が得られます。

Xcode の出力ウィンドウが表示されます。

しかし、C++11 の libc++ では、両方の行を入力した後、2 回目の RETURN キーストロークを入力するまで最初の行では何も起こりませんが、適切な破棄はまだ行われています。したがって、各入力行の後の余分なスペースは、2 番目のキーストロークのように見えます。

cin.get() の while ループの代わりに上記の cin.ignore 呼び出しを使用すると、まったく同じ動作が発生します。問題は、「なぜ 2 回目の RETURN キーストロークが必要なのか」ということです。

0 投票する
1 に答える
2366 参照

c++ - 値の型が不完全なマップ

次のエラーが発生します。

エラーは「フィールドの型 'Test' が不完全です」です。これは、xcode に同梱されている libcxx のバージョンのバグである可能性があると示唆されたいくつかのスレッドを読みましたが、次のように変更する必要がある場合でも、まったく驚かないでしょう。

これが間違いなく正しいエラーであり、バグではないことを再確認したかっただけです。

乾杯!

0 投票する
1 に答える
3113 参照

c++ - Compile and use boost 1.51.0 on Mac OS X 10.8

So I've spent the last 20 hours trying to get boost working under OS X 10.8, and I have finally gotten it to compile without errors, but when I try to compile a test case that uses Boost.test, I'm back again in a world of hurt. I should mention, the reason I compile boost myself instead of using the binary available, is because I want to use c++11 and libc++.

When I compiled boost, I called b2 like this:

and it compiles all file. Then I have this piece of code

which I try to compile with

And it fails miserably, giving me this error:

At first, I figured it was because boost was not compiled for 64bit so I tried telling b2 to do that specifically, but it made no difference, and I also think that it compiles for 64bit by default on OS X.

Any ideas as to why it is failing and how I get it working?