問題タブ [libstdc++]
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.
c++ - std::unordered_map でオブジェクト参照をキーとして使用する
C++ の unordered_map コンテナーでオブジェクト参照をキーとして使用できるかどうかを知りたいです。
この単純なスニペットをコンパイルしようとすると、メソッドの再定義に関するいくつかのエラーが発生しました。
libc++ での clang の使用
/usr/include/c++/v1/unordered_map:352:12: エラー: クラス メンバーを再宣言できません
size_t operator()(const _Cp& __x) const
libstdc++ で gcc 4.6 を使用する
/usr/include/c++/4.6/bits/hashtable_policy.h:556:5:エラー: 'std::__detail::_Map_base<_Key, _Pair, std::_Select1st<_Pair>, true, _Hashtable>::mapped_type& std ::__detail::_Map_base<_Key, _Pair, std::_Select1st<_Pair>, true, _Hashtable>::operator [with _Key = Object&, _Pair = std::pair, _Hashtable = std::_Hashtable, std::allocator >、std::_Select1st >、std::equal_to、object_hash、std::__detail::_Mod_range_hashing、std::__detail::_Default_ranged_hash、std::__detail::_Prime_rehash_policy、false、false、true>、std::__detail ::_Map_base<_Key, _Pair, std::_Select1st<_Pair>, true, _Hashtable>::mapped_type = int]'はオーバーロードできません
/usr/include/c++/4.6/bits/hashtable_policy.h:537:5 : エラー: 'std::__detail::_Map_base<_Key, _Pair , std::_Select1st<_Pair>, true, _Hashtable>::mapped_type& を使用std::__detail::_Map_base<_Key, _Pair, std::_Select1st<_Pair>, true, _Hashtable>::operator[](const _Key&) [with _Key = Object&, _Pair = std::pair, _Hashtable = std: :_Hashtable, std::allocator >, std::_Select1st >, std::equal_to, object_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, false, false, true>, std::__detail::_Map_base<_Key, _Pair, std::_Select1st<_Pair>, true, _Hashtable>::mapped_type = int]'</p>
代わりに古い gnu hash_map (__gnu_cxx::hash_map) を使用すると、この問題は発生しません。
これは新しい標準によって課せられた何らかの制限ですか? もしそうなら、それはなぜですか?
この制限を回避する方法はありますか?
linux - openSUSE 11.2 (x86_64) に gcc-4.6 をインストール/更新するには?
JikesRVM をインストールしたときにエラーが発生しました。
そのため、新しいバージョンにインストール/更新しようとしています。今、マシンはすでに
私は openSUSE を始めたばかりです。
ありがとう!
c++ - 「libstdc++-6!_ZNSo9_M_insertIlEERSoT_() at 0x6fc868a8」のソースがありません
Windows 7 Starter 32bit で MinGW (元々は mingw-get-inst-20120426.exe でインストール) を Eclipse for C/C++ (Indigo SR2) と組み合わせて使用していますが、gcc/g++ 4.7.0 にアップグレードしました:
Eclipse が古いバージョンの参照を保持する問題を修正しました ( https://bugs.eclipse.org/bugs/show_bug.cgi?id=206372#c2 )
しかし、このような単純なプログラムを実行しようとすると、クラッシュします:
デバッグを試みたところ、問題は次のcout行にあるようです。
それをまたぐと、Eclipse から次のエラーが通知されます。
これは、その行の「ステップ オーバー」をクリックした直後の IDE のスクリーンショットです: http://i.stack.imgur.com/QexxQ.png
同じプログラムが以前は正常に機能していましたが、現在は機能しません。
新しいプロジェクトを作成しました (コンパイラ/リンカー オプションには何も触れていません) が、同じ問題が残っています。
誰か解決策を教えてください。
よろしくお願いします:)
gcc - 各 gcc バージョンに同梱されている libstdc++ を知るにはどうすればよいですか?
各 gcc バージョンに同梱されている libstdc++ を知るにはどうすればよいですか? gcc をインストールせずにこの情報を取得する簡単な方法はありますか?
c++ - エラーを回避する方法: 'std::logic_error' のインスタンスをスローした後に呼び出された終了 what(): basic_string::_S_construct null が無効です
文字列コンストラクターに null 参照を渡すことを避けるためにこのようなことを行いますが、コンパイル時にエラーが発生します。
c++ - C++11ライブラリ機能の確認
標準ライブラリの特定のC++11機能の存在をチェックする良い方法は何ですか。
コンパイラー機能については、(IMHO)メジャーコンパイラー(現時点ではVC ++、gcc、clang 、おそらくIntel)のコンパイラーバージョンを確認する方法をとったところです。これは最善かつ最も柔軟なアプローチではありませんが、わかりません。本当に素晴らしいマクロを持っているclangを除いて、まだもっと良いものの。__has_feature
ただし、コンパイラに厳密に結合されていないライブラリ機能の場合はさらに悪化します。現時点では、VC ++のコンパイラバージョンをチェックするのと同じアプローチを使用したいと思います(独自のライブラリを使用していると仮定すると、非常に簡単です)。clangの場合、少なくとも__has_include大規模なヘッダーベースのクエリに使用できます。それ以外は、定義されている場合はの値を確認することをお勧めしますが、現在のバージョンがサポートしている機能以外に、どの特定のlibstdc++__GLIBCXX__バージョンがどの機能を導入したかについての情報を見つけることができません。
洗練された構成手順やサードパーティのライブラリを使用せずにヘッダーのみのライブラリで使用したいので、メソッドはプリプロセッサチェックなどに保持する必要があります(もちろん、ブーストはサードパーティです)。
それで、それらの(かなり狭い)条件下で特定のC++11ライブラリ機能をチェックする私の可能性は何ですか。たぶん、宣言されている特定の関数やタイプの規模でさえ?
コンパイラまたはライブラリのバージョンを確認することが依然として最善のアプローチである場合、特定のバージョンのlibstdc ++(およびおそらく他の重要な機能、おそらくlibc ++ )でサポートされる特定のC ++ 11機能に関する詳細情報はどこにありますか?
現時点でFWIWは<cstdint>、C ++ 11<cmath>関数とstd::hashに関心がありますが、これは変更される可能性があり、一般的なアプローチではおそらく重要ではありません。
libstdc++ - Boost-MPI HelloWorld コンパイルの問題
編集: 解決済み、正しくないブースト設定 /facepalm
古いシステム/クラスターに boost-mpi をインストールしようとしています。
boost をインストールして bjam --with-mpi を使用した後、boost-mpi セットアップ チュートリアルに付属する hello_world の例をコンパイルしようとしました。mpic++ を使用して bjam の mpi-autoconfig を提供し、次を使用してコンパイルする場合:
次のエラーが表示されます。
ということで、bjamでビルドしたときにGLIBCXX3.4.9が見つかったに違いないと推測したのですが、
使った
そして、それぞれに GLIBCXX の最新バージョンとして 3.4.8 しかありませんでした。
私はこの問題についてかなり混乱しています。どんな助けでも大歓迎です!
c++ - gcc 4.8以前は正規表現に関してバグがありますか?
C++11のコードでstd::regexを使用しようとしていますが、サポートが少しバグがあるようです。例:
出力:
gcc(MacPorts gcc47 4.7.1_2)4.7.1でコンパイルした場合、
また
さらに、たとえば、2つの代替パターンしかない場合、正規表現はうまく機能するst|mtため、何らかの理由で最後のパターンが一致していないように見えます。このコードは、AppleLLVMコンパイラでうまく機能します。
問題を解決する方法について何かアイデアはありますか?
考えられる解決策の1つを更新するには、グループを使用して複数の選択肢を実装します(st|mt)|tr。
c++ - clang++ -stdlib=libc++ で libstdc++ コンパイル済みライブラリを使用する
私は Mac OS X (10.8.2) で C++ を使用していますが、最近、libc++ stdlib を使用する clang++ コンパイラで利用できる C++11 機能を使用する必要があることに気付きました。ただし、libstdc++ (MacPorts から取得) に対してコンパイルおよびリンクされたレガシー ライブラリも使用する必要があります。
そうすることで、リンク エラーが発生しました。たとえば、を使用するレガシー ライブラリのヘッダーは、実装ではなく(つまり、の libc++ 実装)std::stringに対して解決する必要があるためです。std::__1::basic_stringstd::stringstd::basic_string
開発中に 2 つのライブラリを混在させる方法はありますか (たとえば、いくつかのプリプロセッサ フラグを使用するなど)。
libstdc++ - libstdc++6 を台無しにしました
teampeak をインストールしようとしたときに、/usr/lib/libstdc++6 を台無しにしてしまいました。これで libstdc++6 ファイルがなくなったので、できる限りのことを試しています。apt-get または aptitude を使用できなくなりました (debian を使用しています)。私に何ができる?