問題タブ [fold-expression]
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++ - 左折式が右折式の出力を反転しないのはなぜですか?
私は C++17の折り畳み式を調べていますが、なぜ次のプログラムが出力されるのか疑問に思っています。
両方のfor_each
呼び出しに対して
2番目のfold式は数値を逆順に出力するためのものだと思っていました
結果が同じなのはなぜですか?
c++ - Clang とバイナリ フォールド式 — 空のパラメーター パックの呪い
具体的には、現在 Coliru によってホストされている Clang 3.6.0 です。
これらのスニペットはすべて次から呼び出されます。
次のコード:
次のコンパイル エラーが発生します。
だから私は式の周りに括弧を入れてみました:
動作しますが、警告が表示されます:
そこで、関数スタイルのキャストを使用して式の値を破棄しようとしましたvoid
:
しかし :
私も試してみましたstatic_cast
が、同じ結果でした。
だから私は代わりにCキャストで試しました:
しかしその後 :
...そして私の出力は----
次のとおりfoo(1, 2, 3);
です。もう出力されません!
Clang は将来の標準からの邪悪な力によって呪われているのでしょうか、バグがあるのでしょうか、それとも問題は私の椅子に座っているのでしょうか?
c++ - 折り畳み式は C++14 または C++1z の機能ですか?
https://isocpp.org/std/the-standardは、ワーキング ドラフトN4296と述べています。
C++14 標準に加えて、マイナーな編集上の変更が含まれています。
N4296 §5.1.3 に「折り畳み式」の仕様が含まれていることに注意しました。これは公式の C++14 標準にならない機能だと思いました。
フォールド式は C++14 の一部ですか、それとも N4296 でのこの追加は、これらのマイナーな編集上の変更の 1 つですか?
c++ - C++17 での式の折り畳み - 比較演算子のユースケース
N4295によると、C++17 を使用すると、未知数の引数の合計を次のように計算できます。
ドキュメントには、+ の代わりに == や > などの演算子を使用できるとさらに記載されています。そのような構成で == または > を使用したい場合の賢明な例を誰か思いつくことができますか?
(私は人々が == と > を定義して奇妙なクラスに奇妙なことをすることができることを認識していますが、それは確かに良い習慣に違反しています. 書くa > b > c > d
ことは決して良い考えではありませんね?)
c++ - GCC がアンパック (I < ...) 式を間違った方法で折りたたむ
GCC にバグを報告しましたが、私の予想が正しいかどうか知りたいです。
この提案と次の折り畳み式を検討してください。
次と同等である必要があります。
次のコードを検討してください。
アサートはコンパイルされ、適切に動作し、失敗しません (確かに、結果が ((0 < 42) and (42 < 3)) ではないことに注意してください。式自体は非常に珍しく無意味です)。
一方、fold 式を使用する場合:
アサートはコンパイル時に失敗します (GCC 6.1.0)。
提案に含まれているもののために、それがコンパイルされることを期待しています。
折り畳み式を含まない上記の例と同等であるため、成功するはずです。
アンパックされた式は、((0 < 42) < 3) である必要があります。
私は正しいですか、それとも折り畳み式についてここで重要なことを見逃していますか?