c++ expected

这篇具有很好参考价值的文章主要介绍了c++ expected。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

std::expected

和std::optional差不多,但是std::optional只能表示有正常的值或者为std::nullopt,即空值。而std::expected则可以表示一个期望的值和一个错误的值,相当于两个成员的std::variant,但是在接口上更方便使用。可以把它当作新的一种的错误处理方式。

基本使用

有两个模板参数,第一个表示为期望的值,第二个表示错误的值。

std::expected<T,E>

如果是期望的值,则有一个隐式的转换

std::expected<int, std::string> e = 42;

如果是异常值,则要通过std::unexpected()来初始化。

std::expected<int, std::string> e = std::unexpected("Error");

和std::optional一样有指针语义,可以解引用。解引用前必须检查,否则为UB!!!

std::expected<int, std::string> e = 42;
if (e)
  std::cout << *e << "\n"; // 打印 42

std::expected<T,E>::value()值不存在时会抛出一个异常,一定程度上更安全。

std::expected<int, std::string> e = 42;
if (e.has_value())
  std::cout << e.value() << "\n"; // 打印 42

表示错误,如果没有错误使用的话为UB!!!文章来源地址https://www.toymoban.com/news/detail-690874.html

std::expected<int, std::string> e = std::unexpected<std::string>("Error");
if (!e.has_value())
  std::cout << e.error() << "\n"; // 打印 `Error`

到了这里,关于c++ expected的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • shell脚本-批量主机执行命令(expect)

    上次连接多台服务器使用ssh-keygen,24机器去连接22、25,所以存在.ssh/authorized_keys 1.如果有.ssh/authorized_keys该文件则先删除 1.expect命令含义 expect是一种脚本语言,它能够代替人工实现与终端的交互,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互

    2024年02月13日
    浏览(57)
  • IndentationError: expected an indented block

    ✅作者简介:大家好我是hacker707,大家可以叫我hacker,新星计划第三季python赛道Top1🏆🏆🏆 📃个人主页:hacker707的csdn博客 🔥系列专栏:hacker的错误集 💬推荐一款模拟面试、刷题神器👉点击跳转进入网站 以猜数字的小程序为例做解答,遇到这种问题该如何解决 IndentationE

    2024年02月17日
    浏览(25)
  • 解决TypeScript error TS1005: ‘;‘ expected

    搭建 Windows10 TypeScript 开发环境,通过\\\"npm install -g typescript\\\"全局安装了TypeScript尝试编译ts文件。报错:TS1005: ‘;’ expected。 导致编译失败的原因主要是编译器版本太老了,使用\\\"tsc -v\\\"命令可以查看当前安装的typescript版本,本地的版本居然还是(1.0.3.0) 命令 使用\\\"npm unintsall t

    2024年02月07日
    浏览(39)
  • VaR 和 ES (Expected Shortfall) 的区别

    上图中,A的面积是95%,B和C的面积相等,都是2.5%,a是B和C的交界点。 看这幅图的时候,我突然有一个错觉: (1)97.5%的VaR是a; (2)根据ES的计算公式,95%的ES将会正好位于B和C的交界点,也等于a; (3)这样的话,97.5%的VaR和95%的ES不就是一回事吗? 仔细分析发现,上面的

    2023年04月25日
    浏览(32)
  • gtest语法(二)ASSERT_*和EXPECT_*断言

    这篇文章主要总结gtest中的所有断言相关的宏。 gtest中,断言的宏可以理解为分为两类,一类是ASSERT系列,一类是EXPECT系列。一个直观的解释就是: ASSERT_* 系列的断言,当检查点失败时,退出当前函数(注意:并非退出当前案例)。 EXPECT_* 系列的断言,当检查点失败时,继续

    2023年04月15日
    浏览(30)
  • Shell编程基础(十一)使用 expect 脚本处理人机交互

    先检测是否有安装 如果没有安装,就先安装 我们在执行某些程序时,可能会出现需要用户在过程中输入某些选项才能继续执行的场景。 比如 删除一个文件时,如果没有使用 -f 参数,系统会提示是否确认删除 又或者 ssh 远程连接服务器,也会有一些需要用户输入的东西 当我

    2024年02月13日
    浏览(57)
  • shell脚本——循环语句、sed、函数、数组、免交互expect

    目录 循环语句 for while 与 until sed 基本用法 sed脚本格式 函数 注意事项 定义函数和调用函数 脚本中函数的位置 查看函数 删除函数 函数返回值 函数的传参操作 使用函数文件 递归函数  数组 声明数组 数组切片 免交互expect 定义  基本命令 for循环需要知道循环的次数 格式1:

    2024年02月11日
    浏览(65)
  • C++23中的新功能之expected和optional

    在前面用过c++17新推出的这个std::optional功能,它可以处理接口返回空值的情况,非常方便实用。但终究存在一个习惯的问题,大家会问,只是处理一个空值,多写一个这玩意儿意义不大,还是用方法吧。这种情况一定是大概率的发生。正如语言发展一样,一定要简单,而且功

    2024年02月11日
    浏览(43)
  • Expected one of xxx device type 解决方法

    出错代码: DEVICE = torch.device(‘gpu’ if torch.cuda.is_available() else ‘cpu’) 报错信息: RuntimeError: Expected one of cpu, cuda, xpu, mkldnn, opengl, opencl, ideep, hip, ve, ort, mlc, xla, lazy, vulkan, meta, hpu device type at start of device string: gpu 原理 无法识别“gpu”这个字符串,只能识别“cpu, cuda, xpu, mkldnn

    2024年02月13日
    浏览(51)
  • [Error] expected unqualified-id before ‘[‘ token

    [Error] expected unqualified-id before ‘[’ token:翻译之后的结果是:“[Error]“[”标记之前应为非限定id”,含义是在“[”之前缺少内容(该内容为非限定的)

    2024年02月04日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包