这些就是 if-then-else, 我们再看看 switch-语句,它与标准C++ switch有些不同。

(switch_statement(_1,case_statement<0>(var(std::cout) << "Nothing"),case_statement<1>(std::cout << constant("A little")),default_statement(std::cout << _1)))(make_const(100));

switch_statement 的调用从条件变量开始,即我们这里的 _1, lambda表达式的第一个参数。它后跟(最多九个)表现为整型的case 常量;它们必须是整型的常量表达式。我们提供了两个这样的常量,0和 1 (注意,它们可以是任何可作为整型类型的值)。最手,我们加一个可选的default_statement, 它在 _1不匹配任何一个常量时被执行。注意,在每一个 case 常量后都隐式地增加了一个 break-语句,所以无需从 switch 显式退出(这对于代码的维护是一件好事[6])。

[6] Spokesmen of fall-through case-statements; please excuse this blasphemy.

boost 一向以简洁高效著称。这里为何要加个"statement"后缀,不解?

不过去掉statement会在编译器里显示成紫色文字。

Boost Part III. 函数对象与高级编程 Library 10. Lambda 用法 switch_statement相关推荐

  1. Boost Part III. 函数对象与高级编程 Library 10. Lambda 用法

    让你的函数对象可以与Boost.Lambda 一起使用 不是所有的表达式都适合使用 lambda 表达式,复杂的表达式更适合使用普通的函数对象,而且会多次重用的表达式也应该成为你代码中的一等公民.它们 ...

  2. Linux环境高级编程函数,Linux环境高级编程--出错处理(CLStatus)

    很多程序库对外提供若干类,每个方法出错时如何告知调用者是否出错,以及出错码(在Linux上在error.h中的全局errno就是保存我们Linux程序执行的出错码的)?方法很多,为了简化起见,函数将返 ...

  3. c#高级编程第11版 pdf网盘_c#高级编程_c#高级编程 目录 微盘_c#高级编程第10版 pdf...

    c#高级编程 C#高级编程(第9版)-C# 5.0 & .NET 4.5.1是由.NET专家的梦幻组合编写,包含开发人员使用C#所需的所有内容.C#是编写.NET应用程序的一种语言,本书适合于 ...

  4. c语言前置函数,C语言高级编程-函数前置与后置调用

    / linux gcc下测试通过(有Bug请提交) 使用本代码需要注名作者: fqheda 本代码遵循GPL V3.0标准,可免费使用-- 函数前置与后置调用 注解:在同一个.c中,一个函数A调用另一 ...

  5. fork()函数_UNIX环境高级编程(APUE)系列学习第8章-2 exit系列函数与wait系列函数...

    5 函数exit exit函数._exit函数和_Exit函数. 在7.3节中介绍了5中进程的正常终止和3种异常终止的方法. 但是无论进程如何终止,最后都会执行内核中的同一段代码.折断代码为相应进程关 ...

  6. 慕课网Flask高级编程实战-10.鱼书业务处理

    10.1 最近的礼物 我们的首页会显示最近的赠送书籍列表.这个列表有三个限制条件: 1.数量不超过30 2.按照时间倒序排列,最新的排在最前面 3.去重,同一本书籍的礼物不重复出现 1.首先编写复杂S ...

  7. c++面向对象高级编程 总目录

    本文是对学习侯捷视频 c++面向对象高级编程系列博客的目录总索引. c++面向对象高级编程 学习一 不带指针的类: 访问私有成员变量的方式,内联inline,常量成员函数,构造函数,值传递,引用传递, ...

  8. c++高级编程学习笔记5

    multimap multimap 是一种允许多个元素使用同一个键的 map.和 map 一样,multimap 支持统一初始化.multimap的接口和 map 的接口几乎相同,区别在于multim ...

  9. 请问unix高级编程中的open包含哪些用法

    "open" 在 Unix 高级编程中是指一个用于打开文件.设备和网络连接的系统调用.它的用法包括: 打开一个文件:通过 open 函数可以打开一个文件,并获取一个文件描述符. 设 ...

最新文章

  1. db2查看表结构_mysql误删数据库表的frm文件和ibd文件?试试这样恢复
  2. canvas之一:绘制直线
  3. 因主机名更改造成oracle控制台登录错误:ora-12545,ora-12541
  4. 关于软件组织培训的几个值得提倡的建议
  5. win系统注册缺少的库 32位系统 64位系统
  6. Sql server 事务的两种用法
  7. Xcode 8 GM 编译缺失 /Users/usr/lib/libresolv.9.dylib
  8. RecyclerView跳转到指定位置,RecyclerView上下滑动监听,RecyclerView滑动速度
  9. python书籍排行榜前十名_学习Python,这些书你看过几本?
  10. Qt学习笔记-简单的TCP程序
  11. 华为鸿蒙系统学习笔记9-华为鸿蒙OS与LiteOS对比
  12. Web 组件势必取代前端?
  13. 用于安全连接 Microsoft 365 的 Mimecast 数字证书被盗
  14. Spark Streaming保存到HDFS目录中案例
  15. IOS开发之异步加载网络图片并缓存本地实现瀑布流(一)
  16. windows及iis网站配置https证书
  17. Oracle数据库链接源文件
  18. C++类学习---------step1
  19. 树莓派驱动数码管c 语言,用树莓派驱动八段数码管实现倒计时
  20. 微积分小糊涂源于微积分大糊涂

热门文章

  1. 云上效率提升指南 | K8S和Serverless还能这么玩
  2. 海外IDC数据中心为什么要做REITs
  3. 剑三 计算机中丢失,剑网3指尖江湖:剑侠情缘中“丢失”的几年,竟在腾讯游戏被找到...
  4. 成功解决WARNING: Ignoring invalid distribution -illow (E:\program files\python\python36\lib\site-package
  5. 成功解决Cannot find declaration to go to
  6. 成功解决matplotlib绘图中描述性字体特殊符号(比如数值的右上角标和右下角标表示)
  7. Dataset:机器学习和深度学习中对数据集进行高级绘图(数据集可视化,箱线图等)的简介、应用之详细攻略——daidingdaiding
  8. Py之docx:Python库之docx简介、安装、使用方法详细攻略
  9. 让Socket穿透Windows防火墙
  10. BZOJ 1016 最小生成树计数