【问题标题】:C++ return type-deduction with shorthand IF statement problemC++ 返回类型推导与速记 IF 语句问题
【发布时间】:2020-06-15 19:56:30
【问题描述】:

为什么在 C++ 中返回类型推导不适用于 short 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】:

    return 语句需要直接返回对象。那就是回报期望一个点。如果其格式为return {0,1},则{0,1} 被强制转换为指向, 但是return 1 ? {0,0} : {1,1},return 语句不能隐式转换为指向,因此您必须创建新对象才能返回。例如return 1 ? Point{0,0} : Point{1,1};

    【讨论】:

      猜你喜欢
      • 2018-05-27
      • 2014-09-07
      • 1970-01-01
      • 2014-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多