問題タブ [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 投票する
3 に答える
370 参照

c++ - [最新の] C++ での N 変数の範囲/ループ

操作を実行するために、それぞれ任意のタイプの N 個の変数を範囲指定する簡潔な方法は何ですか?

a変数、bc、がありde何らかの操作を実行してそれらすべてを調べたいとしましょう。

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

c++ - 「簡潔な範囲ベースの for ループ」とは何ですか?

clang はn3994から簡潔な範囲ベースの for ループの実装を開始しました。範囲ベースの for ループを導入する場合、不必要なコピーを避けるために の形式のコードがよく見られます。n3994はあらゆる点で優れていると提案しているようです。いくつかの質問を聞きたいんです:for (auto & v : vector)for (auto && v : vector)

  1. 後者の形式は前者よりもどのような利点がありますか? 後者が明らかに有利であるのに、なぜ私たちは通常auto &代わりにそれを採用するのでしょうか?auto &&
  2. auto &&新しい ranged-for ベースのループを作成することは、既存のコードを壊すことと同等ですか? それは新しいコードに実際の影響を与えるでしょうか?
  3. これは、コードが実際に同等である初心者に落とし穴をもたらしませんauto &&か?
0 投票する
3 に答える
1655 参照

c++ - TR2 は C++17 でリリースされますか?

TR2には甘いものがたくさんあります。それはC++17になりますか?

TR1 は 2005 年に完成し、C++11 が標準化されるまで待たなければならなかったと理解しています。でも、TR2が完成しているのもわかりますよね?

私の C++17 へのリンクでは、TR2 については何も言及されていませんが、期待しています...

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

c++ - initializer_list を持つオプションのコンストラクター

この特別なコンストラクターが初期化子リストを取得する目的は何ですか。誰かがこれがいつ役立つかの例を挙げてもらえますか?

上記はこれとどう違うのですか?

参照: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3793.html#optional.object.ctor

PS c++14 または c++1z タグを使用するかどうかはわかりません。C++ 技術仕様のタグが必要だと思います

0 投票する
4 に答える
2217 参照

c++ - constexpr インデックスがあってもコンパイラが範囲外の配列アクセスを許可するのはなぜですか?

たとえば、 があり、コンパイラstd::arrayを使用して範囲外の要素をインスタンス化しても、constexprエラーは報告されません。

これをどうにか制限できないでしょうか?

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

c++ - 任意の callable で式を折りたたむ?

折り畳みに関するC++17 の論文(およびcppreferenceに関するもの) を見てみると、なぜ演算子のみで動作するように選択されたのかについて混乱していますか? 一見すると、 の要素の間にトークンを(... + args)押し込むだけで簡単に拡張できるように見えますが、これが素晴らしい決定であるとは確信が持てません。 +args

バイナリ ラムダ式が同様に機能し、上記の後者と同じ展開ができないのはなぜですか? 任意の callable をサポートせずに折り畳み構文が言語に追加されることは私には不快です。


更新:min()これは、clangを使用した可変引数関数で機能します

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

c++ - C ++ 17は、なぜ三重グラフと一緒に二字グラフを削除しないのですか?

C++17 はトライグラフを削除しました。IBM はこれに激しく反対したため (ここここ)、削除/非削除の両側に議論があるようです。

しかし、トライグラフを削除する決定が下されたのに、なぜダイグラフを残すのでしょうか? トライグラフを保持する理由を超えて、ダイグラフを保持する理由はわかりません (それらを保持するのに十分な重みがなかったようです)。

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

c++ - 固定サイズ配列の非メンバー std::empty オーバーロードの戻り値

[承認された] 標準文書N4280は、C++17 に折りたたまれるいくつかの新しい非メンバー関数を追加します。

新しい非メンバー関数のそれぞれの適切な戻り値を示すコメントがあり、特に、std::empty固定サイズの配列のオーバーロードは私を混乱させます。falseこの論文は、そのオーバーロードの戻り値が常に;になることを示唆しています。すべての固定サイズの配列が空になることはありません。

なぜこれが当てはまるのでしょうか?私の知る限りでは、(おそらく役に立たないかもしれませんが) のようにサイズがゼロの配列を持つことは可能ですint x[0];。これを空と呼びます。

参考までに、私が話している特定のオーバーロードは次のとおりです。