为什么在C++中返回类型扣减不能用短if?
下面是示例代码。(编译器 g++-10 v.10.0.1 20200416)
struct Point{
int x;
int y;
};
Point test() {
// In C++20 works
return {0,1};
// In C++20 works
return 1 ? Point{0,0} : Point{1,1};
// In C++20 don't work
return 1 ? {0,0} : {1,1};
}
我想应该在所有情况下都是有效的:)是否有什么魔法可以强制进行类型扣除?
return语句需要直接返回对象。也就是返回时期望有一个Point,如果其格式为 return {0,1}
జజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజ {0,1}
是投向点,但 return 1 ? {0,0} : {1,1}
例如,return语句不能隐式投向点,所以你必须创建新的对象来返回。return 1 ? Point{0,0} : Point{1,1};