if-statement - C++ 返回类型推导与速记 IF 语句问题
问题描述
为什么在 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};
}
我认为它在所有情况下都应该有效:) 是否有一些魔法可以强制类型推断?
解决方案
return 语句需要直接返回对象。那就是回报期望一个点。如果它的格式为return {0,1}
,则将其{0,1}
强制转换为指向,但是return 1 ? {0,0} : {1,1}
,return 语句不能隐式强制转换为指向,因此您必须创建新对象才能返回。例如return 1 ? Point{0,0} : Point{1,1};
推荐阅读
- python - 如何将 'dtype = object' NumPy 数组转换为 'dtype = float' 数组?
- python - 我正在尝试在我的新项目中添加新产品。但是为什么显示(没有这样的表:main.auth_user__old)
- javascript - 如何在 python 中调用 Javascript 函数?
- jquery - Summernote 不会加载工具栏面板
- timer - 设置一个重复的 24:00:00 倒计时计时器,该计时器在 00:00:00 停止并重置
- python - 我收到一个错误 KeyError Feature not in dictionay
- c# - 返回实例化对象时的空对象?
- c++ - 解析编译错误:没有匹配函数调用 'std::pair<,>::pair()'
- python - Python:numpy.arange 等效函数,具有最小值、最大值和“箱数”而不是“步数”?
- google-cloud-platform - google-cloud-cpp 的 CMake 失败