問題タブ [compiler-bug]

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 投票する
1 に答える
538 参照

c++ - Visual Studio 2012 はこれを正しく行いますか? std::移動

私が最近答えようとした質問は、vs2012 の c++11 サポートのエラーのようでした。

具体的には、マップへの挿入に std::move のみが使用されているにもかかわらず、コピー構築不可能な value_type で std::map をコンパイルできませんでした。間違った挿入オーバーロードが選択されているか、コンパイラが代替を考慮していません。

基本的に、次のコードかどうか知りたくありません。

出力01を与えます。

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

c++ - C++ プリプロセッサの R と L の特別な点は何ですか?

Visual Studio 2013 プリプロセッサを介して次のコードを実行しました。出力は私を驚かせます。

hello.cpp の内容:

コマンド:

hello.i には以下が含まれます。

A(L?p:q) を呼び出そうとしたときにこれに遭遇しました。その結果、「Lp:q」になりました。これは私にとっては良くありません。

これは適切で明確に定義された C++ ですか? C++ の L と R の特別な点は何ですか? ファイルの拡張子が .c の場合、L と R は残りのアルファベットと同じように扱われます。これは C++11 に関連していますか? 古いバージョンの MSVS は L と R を特別な方法で処理しないため、これは新しい機能に違いありません。

また、MSVS 2013 がこの特別な方法で L と R を処理しないようにするにはどうすればよいでしょうか?

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

c++ - コンパイル時に静的配列を初期化するときの g++ (4.7.2) バグまたは機能?

constexpr static int constさて、コンパイル時に一連の配列を初期化することで、何か賢いことをしようとしていました。これらの配列を初期化することによって実行時のパフォーマンスがまったく管理されていないにもかかわらず、それは楽しい小さな演習のように思えました。それが可能かどうかを確認するためにテストセットアップを作成しましたが、最終的にこれを実行できるようになりました。

ここでは、0 から始まる10 個の s を含むArrayと呼ばれる静的メンバーがあり、後続の各要素の値は、 (つまり)と呼ばれるテンプレート メタプログラミング ファンクターによって決定されます。予想どおり、プログラムは数字を出力します。arrayintIncrement{0, 1, ..., 9}3

すごいですよね?今はファンクタを書くだけで、コンパイル時にあらゆる種類のファンキーなパターンで配列を初期化できます。Test次のステップ: 次のようにクラス テンプレートを作成して、配列サイズ 10 のハードコードを解除します。

ただし、突然、次のメッセージでコンパイルされなくなりました。

なぜこれが起こるのですか?クラスをクラステンプレートにすると、この種の初期化が無効になる理由はありますか、または GCC で実装されていない/バグのあるものに遭遇しましたか?

Array参考までに、リクエストに応じて残りのコード (たとえばの実装) を投稿できます。今のところ、これで十分だと思います。

編集Arrayここでスペースを節約するために、別の簡単な実装でエラーを再現できます。

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

c++ - std::array の初期化文字列リテラルを使用したコンストラクターのメンバー。GCCのバグ?

文字列リテラルを使用してコンストラクターでメンバーを初期化する次の例std::array <char, N>は、GCC 4.8 ではコンパイルされませんが、Clang 3.4 を使用してコンパイルされます。

第一印象では、GCC のバグのように見えます。std::array<char, N>文字列リテラルで直接初期化できるので、コンパイルする必要があると思います。例えば:

これについて標準が何を述べているかを知りたいと思います。

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

c++ - これは GCC のバグですか? 共用体による構造体の初期化

GCC v4.8.2 でバグを見つけたかもしれませんが、送信する前にまず確認したいのですが、何か間違っている可能性があります。

次のコード:

clang++ -std=c++11 main.cppこれをうまくコンパイルします。ただしg++、これを出力します:

誰もアイデアを持っていない場合は、これをバグとして提出しますが、私の経験では、プログラマーの問題がコンパイラーのバグであることはほとんどなく、ほとんどの場合、プログラマー自身のせいです!

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

c++ - gcc 4.7 がポインタ テンプレート パラメータの使用に失敗することがある

完全な (ない) 動作例:

次のようにコンパイルされます。

ideone の gcc 4.8.1 で実行中のプログラムを取得しますが、4.7.3 では次のように出力されます。

最後の 2 行は 3 回繰り返されます。理由は何ですか? gcc 4.7.3 で私のコードを使用するための回避策はありますか?

0 投票する
3 に答える
392 参照

c++ - GCCのバグ?メソッドの連鎖、壊れたシーケンス ポイント

私はしばらくの間プログラムをデバッグしてきましたが、最終的にエラーは参照が更新されていないことが原因であることがわかりました。

私が遭遇した問題を示す例を次に示します。

ここでの print() メソッドは 15 を出力すると予想していましたが、代わりに 5 を出力します。

編集: 10 日後、clang を使用すると 15 が出力されることに気付きました! これは GCC のバグですか?