問題タブ [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.
c++ - 一時変数への参照を使用する式テンプレートは再利用できますか?
式テンプレートに頭を悩ませようとしています。ウィキペディアの記事では、式テンプレートがその 2 つのオペランドへのconst 参照VecSum
を格納する例が示されています。Aは、 をラップする式テンプレートです。最初に質問をしてから、以下の例を完全に要約します。Vec
std::vector<double>
一時変数への const 参照を使用する式を再利用できますか? そうでない場合、軽量で再利用可能な式テンプレートをどのように実装しますか?
3 つVec
のa
、のb
場合、c
式a+b+c
は次のタイプです
私が正しく理解していれば、内部VecSum
は一時的で、外部VecSum
は内部への const 参照を格納しVecSum
ます。式が評価されるまで、内部VecSum
一時の有効期間が保証されると思います。正しい?これは、ダングリング参照を作成する危険なしに式を再利用できないことを意味しますか?a+b+c
もしそうなら、この例をどのように変更できますか?
- 式は再利用可能です
- 式はオペランドのコピーを格納しません(少なくとも必要でない状況では)。
完全なコード例
完全を期すために、その間にウィキペディアの記事が更新された場合に備えて、ここでサンプルコードを繰り返し、main
ダングリングリファレンスを作成すると思われる の例を示します。
編集:
これがこの質問の複製である可能性があることに気付きました。ただし、両方の質問に対する答えは大きく異なり、すべて有用です。