我不知道这是编译器错误(Arch Linux 上的 gcc 4.8)还是标准问题,但下面的代码无法编译。为什么允许 getFoo1 而不允许 getFoo2?
struct Foo {
int _i;
Foo(int i):_i(i) { }
};
Foo getFoo1(int i) {
if(i == 3) {
return { i + 2 };
} else {
return { i };
}
}
Foo getFoo2(int i) {
return i == 3 ? { i + 2 } : { i };
}
int main() {
auto foo1 = getFoo1(3); //fine
auto foo2 = getFoo2(3); //oops
return 0;
}