問題タブ [expression-templates]

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

c++ - 一時変数への参照を使用する式テンプレートは再利用できますか?

式テンプレートに頭を悩ませようとしています。ウィキペディアの記事では、式テンプレートがその 2 つのオペランドへのconst 参照VecSumを格納する例が示されています。Aは、 をラップする式テンプレートです。最初に質問をしてから、以下の例を完全に要約します。Vecstd::vector<double>

一時変数への const 参照を使用する式を再利用できますか? そうでない場合、軽量で再利用可能な式テンプレートをどのように実装しますか?

3 つVeca、のb場合、ca+b+cは次のタイプです

私が正しく理解していれば、内部VecSumは一時的で、外部VecSumは内部への const 参照を格納しVecSumます。式が評価されるまで、内部VecSum一時の有効期間が保証されると思います。正しい?これは、ダングリング参照を作成する危険なしに式を再利用できないことを意味しますか?a+b+c

もしそうなら、この例をどのように変更できますか?

  • 式は再利用可能です
  • 式はオペランドのコピーを格納しません(少なくとも必要でない状況では)

完全なコード例

完全を期すために、その間にウィキペディアの記事が更新された場合に備えて、ここでサンプルコードを繰り返し、mainダングリングリファレンスを作成すると思われる の例を示します。


編集:

これがこの質問の複製である可能性があることに気付きました。ただし、両方の質問に対する答えは大きく異なり、すべて有用です。