問題タブ [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++ - Variadic テンプレートを使用した式テンプレート演算子
可変個引数テンプレートを使用しadd
て、任意の数の入力パラメーターを受け取り、Expression
(遅延評価される) 1 つのパラメーターを返すfunction を作成できます。特定の index に対して呼び出されると、この式はすべての入力ベクトルのすべてのi
要素を一度に合計します。i
これはすべて非常に素晴らしくきちんとしているように見えますが、実際の operatorをオーバーロードすることは可能ですか。つまり、次のように記述します。
残念ながら、 を使用した 2 番目のコードv1 + v2 + v3
ではコンパイル エラーが発生します。
- VS 2019:
Fatal Error C1001, An internal error has occurred in the compiler.
- GCC 8.3.0:
'Expression<Ts ...> operator+(const Ts& ...)' must have an argument of class or enumerated type
これを機能させる方法はありますか?
c++ - フォールド式の引数を std::forward できますか?
C++11 には可変個引数テンプレートがありstd::forward
、次のコードのように引数を指定できます。
しかし、C++17 ではフォールド式があります (私の理解では、最後の引数まで再帰的な関数呼び出しは行われません)。
オンラインの例ではstd::forward
、fold 式が使用されている場合、引数の ing が表示されませんでした。
フォールド式で引数を転送できますか? それとも、まったく必要ありませんか?
ばかげた初心者の質問かもしれませんが、それでもオンラインで答えを見つけることができませんでした。