我写了这段代码并用 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;
}
cf 在http://rextester.com上构建 reslut