問題タブ [c++17]

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 に答える
295 参照

c++ - clang 3.6倍式 左/右

clang 3.6 '--std=c++1z' でフォールド式を試していますが、うまくいきません。私がテストしている機能は次のとおりです。

n4191によると、左に折りたたむと展開されると予想しています

これは結果 5 を与えますが、結果は 9 です。

n4191 を何か見逃しているか、誤解していますか? ありがとう

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

c++ - f & g が同じグローバル変数を未定義または未指定に変更するとき、式 f() > g() の値は?

更新: ユーザーecatmurによってマークされているように、それはIn C99, is f()+g() undefined or単に unspecified?の複製です。(質問はC99について尋ねますが、答えはC ++では変わりません)。答えは未指定です (どちらの場合も)。


次の C++14 コード フラグメントを検討してください。

の値が指定されていz ないだけですか、それとも未定義の動作ですか?

私の理解によると (私が間違っている場合は修正してください)、種類の式:i++ > i++シーケンスポイントのペア間で同じ変数を2回変更しているため、未定義の動作になりますが、上記の場合はどうなりますか (突然変異が別々に発生する場合)機能) ?

そして、これはどうですか:

0 投票する
32 に答える
268415 参照

c++ - 最新の C++11 / C++14 / C++17 および将来の C++20 で列挙型から文字列へ

他のすべての同様の質問とは対照的に、この質問は新しい C++ 機能の使用に関するものです。

多くの回答を読んだ後、まだ何も見つかりませんでした:

多くの場合、例は長い説明よりも優れています。
このスニペットは、Coliruでコンパイルして実行できます。
別の以前の例も利用可能です)

制約

  • 他の回答基本的なリンクの価値のない複製はしないでください。
  • 肥大化したマクロベースの回答を避けるか、#defineオーバーヘッドを最小限に抑えるようにしてください。
  • マニュアルなしでお願いしますenum->stringマッピング。

あった方がよい

  • enumゼロ以外の数値から始まるサポート値
  • 負のenum値をサポート
  • 断片化されたenum値をサポート
  • サポートclass enum(C++11)
  • class enum : <type>許可されたすべてのサポート<type>(C++11)
  • コンパイル時 (実行時ではない) の文字列への変換、
    または少なくとも実行時の高速実行 (例:std::map良いアイデアではありません...)
  • constexpr(C++11、その後 C++14/17/20 で緩和)
  • noexcept(C++11)
  • C++17 / C++20に適したスニペット

variadic template class考えられるアイデアの 1 つは、C++ コンパイラ機能を使用して、および関数に基づくメタプログラミングのトリックを使用して、コンパイル時に C++ コードを生成するconstexprことです...

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

c++ - 関数の戻り値からの移動によるブレースの初期化により、「過剰な要素」エラーが発生する

次のコード スニペットがあるとします。

の単一行がの戻り値で の移動コンストラクターを使用mainして宣言および定義/初期化することを期待します。myFooFoomakeFoo()

clang++ただし、 3.5.1 (C++14 モードでコンパイル)から次のエラーが発生します。

何が起きてる?「構造体初期化子」とは正確には何を意味しますか?それは POD のデフォルト (引数なし) コンストラクターですか? move コンストラクターが呼び出されないのはなぜですか?

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

c++ - テンプレート関数と自動型推定のどちらかを選択

テンプレート関数と関数の自動型推定に関する一般的な質問があります。

何年もの間、テンプレート関数を書くことができました:

関数のパラメーター推定に auto を使用するための TS があります

私は auto を使用していましたが、実際の型にアクセスしたり、たとえば静的メンバーを使用したりする方法はありませんでしたが、これはうまく機能します:

では、どちらかを選択する理由はありますか?