0
我寫了這段代碼並用gcc編譯。 我希望得到結果「2」,但結果是「0」。通用引用和命名參數Ideom
其他編譯器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.建立reslut上http://rextester.com
http://rextester.com/GBM44684 – sumomoneko
我誤解了自動演繹。 'auto && t = Test().inc()'不是'auto && t = Test(); t.inc();'。謝謝@Quentin! – sumomoneko
'gcc-7 -sanitize-address-use-after-scope'可以檢測到這個錯誤。 – sumomoneko