0
このコードを書き、gccでコンパイルしました。 私は結果 "2"を得ることを期待しましたが、結果は "0"でした。ユニバーサルリファレンスと名前付きパラメータのアイデア
他のコンパイラclangとvcは "2"を出力します。 定義されていない動作ですか?
#include <stdio.h>
struct Test {
Test& inc() {
++value;
return *this;
}
int value = 1;
};
int main() {
auto&& t = Test().inc(); // The life-time of the temporary might extended.
printf("%d\n", t.value); // gcc prints "0". dangling reference?
return 0;
}
c.f.無関係である(つまり、普遍的な参照が名前に変更されているものです)http://rextester.com
http://rextester.com/GBM44684 – sumomoneko
私は自動演繹について誤っています。 'auto && t = Test()。inc()'は 'auto && t = Test();ではありません。 t.inc(); 'ありがとう@クエンティン! – sumomoneko
'gcc-7 -fsanitize-address-after-scope'はこのエラーを検出できます。 – sumomoneko