C++ - 自动返回引用和非引用类型

2024-02-05

当编写函数时auto我们可以使用的返回类型constexpr if返回不同类型。

auto myfunc()
{
   constexpr if (someBool)
   {
      type1 first = something;
      return first;
   }
   else
   {
      type2 second = somethingElse;
      return second;
   }
}

然而,我正在努力弄清楚如何仅将其中一种类型作为参考。看来以下代码仍然返回两个分支的右值

auto myfunc()
{
   constexpr if (someBool)
   {
      type1 &first = refToSomething;
      return first;
   }
   else
   {
      type2 second = somethingElse;
      return second;
   }
}

有没有办法做到这一点?谷歌并没有透露太多,因为有很多关于自动和引用返回的更一般使用的教程。在我的特定情况下,该函数是一个类方法,我想返回对成员变量的引用或数组的视图。


Just auto永远不会成为参考。你需要decltype(auto)相反,并将返回值放在括号内:

decltype(auto) myfunc()
{
   if constexpr (someBool)
   {
      type1 &first = refToSomething;
      return (first);
   }
   else
   {
      type2 second = somethingElse;
      return second;
   }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ - 自动返回引用和非引用类型 的相关文章

  • switch 语句里面有 switch 语句?

    我必须评估很多条件 就我而言 我必须做这样的事情 switch id case 5 switch some other cases here case 6 set some value 在情况 5 中再进行一次切换是个好习惯吗 如果不是 那
  • 比较 boost::system::error_category

    对于 errorCode category name 输出 asio misc 和 errorCode message 输出 文件结束 的错误 以下比较失败 如果它声称属于 asio misc 类别 那么为什么 errorCode cate
  • 在C#中创建对象而不使用new关键字? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 有没有一种方法可以在 C 中不使用
  • ASP.NET MVC:DropDownListFor 未选择任何选项

    我用它来填充 ASP NET MVC 视图中的下拉列表 调试这个我可以看到Selected属性设置为true当它应该是的时候 但是当渲染视图时 列表中的任何选项都不
  • 将自定义信息添加到 CSPROJ 文件

    作为我们开发生命周期的一部分 我们在项目中针对 C 源代码运行了许多流程 这些进程由 GUI 驱动 该 GUI 当前读取 csproj 文件以查找项目中使用的源文件 这很好用 我们现在有一个新要求 即提供一些需要调用 Web 服务的验证过程
  • 如何在 C 中的 for (;;) 循环中声明多个变量?

    我认为可以在一个变量中声明多个变量for loop for int i 0 char ptr bam i lt 10 i 但我刚刚发现这是不可能的 GCC 给出以下错误 错误 char 之前应有不合格的 id 你真的不能在一个变量中声明不同
  • 了解 C# 中的自签名证书

    最近我遇到了这个c 代码 var dn new X500DistinguishedName CN appSettings CommonName OU appSettings OrganizationalUnit X500Distinguis
  • 在 C++ 中将 unix 时间戳转换为星期几?

    如何根据任意 Unix 时间戳 秒 确定加利福尼亚州的星期几 太平洋时间 我四处搜寻 但没有找到 C 的内置库 UTC 通常比 PT 早 8 小时 但只需从 Unix 时间戳中减去 8 小时并创建一个tmstruct 不起作用 因为这会折扣
  • 无法从 Windows Phone 8.1 访问 .NET 4.5 PCL 中的本地化资源

    我在访问针对 NET 4 5 的可移植类库中的本地化字符串资源时遇到问题 我允许用户在第一页上选择语言 并在其他页面上获得本地化体验 我试图通过代码获取资源来实现这一点 MyTextBloxk Text PasswordResetMetho
  • 如何将 textblock.foreground 绑定到变量? (WPF C#)

    所以我希望改变我的程序 以便我可以运行一个函数来检查前景色是否应该是黑色或银色 我希望将不可 访问 的字段灰显 My form currently looks like 我希望将 无需维护 字段 灰显 但我在尝试在数据模板中定义字体前景的绑
  • 使用枚举作为常量表达式。哪个编译器是正确的?

    以下代码使用枚举成员m作为常量表达式 即作为模板参数 该代码可以在 gcc 下编译 但不能在 clang 下编译 现场演示 http coliru stacked crooked com a 79f0d052864fec19 20live
  • 没有 DbSet 的原始 SQL 查询 - Entity Framework Core

    随着 Entity Framework Core 的删除dbData Database SqlQuery
  • boost::property_map 在 boost 中是如何实现的以及如何更改它

    我想知道属性映射是如何在提升图中实现的 例如 我的顶点和边属性定义如下 vertex property gt struct NodeInfo int a b c actual bundled property struct NodeInfo
  • 访问 ASP.NET 中 App_Code 中未声明的类

    我有时定义业务逻辑类来 帮助 我的 ASPX 代码隐藏类 对我来说 将它们都包含在代码隐藏文件中是最有意义的 因为它们一起工作 但是 我偶尔想从 App Code 中定义的更高级别的类访问业务逻辑类 但它们不能在文件外部自动访问 因此 问题
  • 在 C 中释放 NULL 指针是一个好习惯吗? [复制]

    这个问题在这里已经有答案了 可能的重复 ptr 为 NULL 的 free ptr 是否会损坏内存 https stackoverflow com questions 1938735 does freeptr where ptr is nu
  • Oracle 数据库,SQL 更新语句将不起作用 (OLEDB)

    我设置了一个数字主键和一个存储卡车 FINS 的字母数字字段 它只是数字和字母的随机组合 我不生成鳍片 这些鳍片将始终与卡车车队识别号相同 这是代码视图 storeTruckSplit truckSplit 1 Stores truck F
  • 画笔到画笔动画

    我设法找到了如何制作 WPF 动画 两种颜色之间的过渡 它被称为 ColorAnimation 并且效果很好 ColorAnimation animation new ColorAnimation From Colors DarkGreen
  • 加速Cuda程序

    要更改哪一部分来加速此代码 代码到底在做什么 global void mat Matrix a Matrix b int tempData new int 2 tempData 0 threadIdx x tempData 1 blockI
  • C++ 中的编译器指令重新排序优化(以及阻碍它们的因素)

    我已将代码缩减为以下内容 这在保留我感兴趣的编译器输出的同时 尽可能简单 void foo const uint64 t used uint64 t ar 100 for int i 0 i lt 100 i ar i some globa
  • 将 VBA 转换为 .NET 语言 [重复]

    这个问题在这里已经有答案了 可能的重复 是否可以将 VBA 转换为 C https stackoverflow com questions 388819 is it possible to convert vba to c 假设我有一个大型

随机推荐

  • Errno::EACCES:运行捆绑包时权限被拒绝,它命中 json 1.8.1,pg 0.17

    我刚刚买了一台新笔记本电脑 并使用迁移助手完全转移了所有内容 似乎一切正常并且处于适当的位置 所以我不知道这是否是问题所在 我对调试这样的环境错误还很陌生 我一直在 Windows 上开发一个 Rails 项目 这台笔记本电脑是 Mac O
  • Python 字符串中的 u'\ufeff'

    我收到错误并显示以下异常消息 UnicodeEncodeError ascii codec can t encode character u ufeff in position 155 ordinal not in range 128 不知
  • JScrollPane 中的滚动更平滑

    使用 JScrollPane 的滚动条箭头进行滚动 或通过为箭头键设置键绑定 将视口移动一个增量 暂停 然后平滑滚动 我遇到的大多数滚动条的行为都是一样的 有轻微的移动 暂停 然后更快地连续滚动 有什么方法可以避免暂停 以便滚动从开始到结束
  • C 中的重音/元音字符?

    我刚刚学习 C 语言 并接到了一项作业 要求我们将纯文本翻译成莫尔斯电码 然后再翻译回来 我最熟悉 Java 所以请耐心等待我使用的术语 为此 我有一个包含所有字母字符串的数组 char letters etc 我编写了一个函数来返回所需字
  • Python Discord.py `time.sleep()` 协程

    import discord import os import random import time import math client discord Client with open admins conf r as f for li
  • 反应本机无法读取 null 的属性“绑定”

    我尝试运行一个反应本机模拟器 然而 在模拟器中却出现了这个错误 Failed to load bundle http localhost 8081 index bundle platform ios dev true minify fals
  • javascript CORS onerror 处理程序

    背景 几年前 有一个问题onerror处理程序和跨源脚本标签 更多相关信息 http jeremiahgrossman blogspot com 2006 12 i know if youre logged in anywhere html
  • 如何获取被点击元素的类?

    我不知道如何获得class单击的元素的值 当我使用下面的代码时 我得到 node 205 每次 jQuery find gt ul tabs selectedClass active select function event ui sho
  • EXC_BAD_ACCESS 当我关闭窗口时,这也是我的应用程序的委托

    我写了一个 Cocoa 应用程序 然后我得到了EXC BAD ACCESS当我关闭应用程序窗口时出错 我读到这个错误通常意味着内存问题 但我有ARC mode上 我不需要关心释放等 xCode 禁止我调用此函数并自动管理内存 错误指向行re
  • Django 单元测试缺少数据库列

    我在 Django 上创建了一个单元测试来创建用户帐户并发送验证电子邮件 用户已创建 但电子邮件发送失败 电子邮件的默认内容应该在创建用户时创建为用户中的一个字段 但由于某种原因 Django 声称 DatabaseError no suc
  • Iconv:带有 ASCII//IGNORE 的 EILSEQ,但不带有 ASCII//TRANSLIT//IGNORE

    使用 iconv 与 TRANSLIT IGNORE从 utf8 转换为 ascii 效果很好 它根据当前语言环境将不可转换的字符替换为正确的音译 在我的例子中为 de DE gt echo m p iconv f UTF8 t ASCII
  • -webkit-fill-available 有什么用?

    PIC 1 这就是我所拥有的 图1 PIC 2 这就是我需要的 图2 在pic 2中我添加了 width webkit fill available 我得到了我所期望的 但我不知道它是如何运作的 因此 您需要了解两件事 webkit fil
  • 子域约束(Rails 3)使本地服务器(瘦)如此慢

    我最近向我的 Rails 路由文件添加了子域约束 constraints subdomain gt new do devise for customers do get customers sign up gt registrations
  • UITableView reloadData 有多贵?

    我很好奇 UITableView 的 reloadData 的资源消耗有多大 我有一个应用程序 它将发出大约 10 个后续 HTTP 请求 当它获取数据 准备时 它会重新加载 tableView 随着数据集变得越来越大 它变得非常缓慢 我试
  • 无法连接到 MongoLab“身份验证失败”错误

    我是蒙戈新手 最近在 mongoLab 创建了一个帐户 我正在尝试使用以下语句连接到数据库 mongo ds039487 mongolab com 39487 webbies u
  • C# 解析无名称的Json文件

    所以 Json 文件的一部分是这样的 number 23 name LJames lt look at this line Gender Male 我正在尝试解析它 只要名称字段存在 名称与值不匹配 DataContractJsonSeri
  • 在 R Ubuntu 中安装主题模型时出错

    我在安装时遇到错误topicmodels封装在R 跑步时install packages topicmodels dependencies TRUE 以下是我收到的最后几行 请帮忙 我的R版本是3 1 3 g I usr share R i
  • 使用雷达/极坐标图来描述各个数据点

    这是继我之前的帖子之后 如何在ggplot2中测量多边形的面积 https stackoverflow com questions 47644156 how to measure the area of a polygon in ggplo
  • 如何验证GPU的使用情况?

    如何验证 CNTK 是否正在使用 GPU 我已在我的计算机上安装了 CNTK 2 0 beta7 0 Windows 64bit GPU 1bit SGD 二进制文件 但是 当我尝试从 Python 运行它时 from cntk devic
  • C++ - 自动返回引用和非引用类型

    当编写函数时auto我们可以使用的返回类型constexpr if返回不同类型 auto myfunc constexpr if someBool type1 first something return first else type2