問題タブ [parameter-pack]

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

c++ - パラメーター パックの型と積分の両方のキーワード

特殊化 (つまり、テンプレート化された型) を検出する特性がある場合:

これは期待どおりに機能します。

パラメータ パック タイプの 1 つが実際に値である場合を除きます。

これは、template <typename...> class U宣言が特にtypes用であるためです。切り替えた場合、すべての値を受け入れるようになりますが、型template <auto...> class Uの混合を取ることができると宣言する方法はありますか?

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

c++ - パラメータ パックを扱うときに省略記号が必要になるのはいつですか?

cppreference.com のコードを理解しようとしています。該当部分はこちら

上記を正しく解釈している場合((os << tupleArgs << (++n != sizeof...(Ts) ? ", " : "")), ...)、コンマ演算子に対する折り畳み式です。意味的には([some pattern involving the parameter pack's values] , ...)、コンマで折りたたむことを意味します。

しかし、私が得られないのは、なぜsizeofそこにあるのsizeof...ですか?私にとって省略記号は展開を意味しますが、そこを展開したくありません。Tsタプルに似た集約型のようなものです。コンパイラが折り畳みを評価している間、その集約型のコンパイル時のサイズが必要です。実際、Visual Studio では、省略記号の有無にかかわらず、どちらの方法でも機能します。GCCでも同じだ、とGodboltは教えてくれました。(編集:実際には、コンパイルする省略記号がないと間違っていますが、出力には存在しないはずの末尾のコンマが含まれています)

sizeof...パラメータパックのサイズが必要な場合は、常に使用するルールですか?