「戻り値の最適化」の概念は C++ コンパイラのラムダ式に適用されますか? コンパイラと最適化パラメータに依存することは知っていますが、理論的には可能ですか?
ところで、VS.NET 2013以降でこの問題について知っている人はいますか?
しかし、それは理論的に可能ですか?
そうしない理由がわかりません。ラムダは、オンザフライでコンパイル時に生成され、()
演算子がオーバーロードされた構造体です。
これは次のことを意味します:
auto f = []{printf("hi");};
おそらく翻訳されるでしょう
struct lambda<someID>{ void operator(){printf("hi");} };
auto f = lambda<someID>();
したがって、コンパイラが最適化できると判断した場合、RVO がここで機能しない理由はありません。