C++返回类型推导与速记IF语句问题

问题描述 投票:0回答:1

为什么在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};
} 

我想应该在所有情况下都是有效的:)是否有什么魔法可以强制进行类型扣除?

if-statement g++ type-deduction
1个回答
0
投票

return语句需要直接返回对象。也就是返回时期望有一个Point,如果其格式为 return {0,1}జజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజ {0,1} 是投向点,但 return 1 ? {0,0} : {1,1}例如,return语句不能隐式投向点,所以你必须创建新的对象来返回。return 1 ? Point{0,0} : Point{1,1};

© www.soinside.com 2019 - 2024. All rights reserved.