这个流控制关键字类标识符的结构是什么?
What is this construct with flow-control-keyword-like identifiers?
以下代码来自Chromium:
return Switch(cmd)
.CASES((F_GETFL,
F_GETFD,
F_SETFD,
F_SETLK,
F_SETLKW,
F_GETLK,
F_DUPFD,
F_DUPFD_CLOEXEC),
Allow())
.Case(F_SETFL,
If((long_arg & ~kAllowedMask) == 0, Allow()).Else(CrashSIGSYS()))
.Default(CrashSIGSYS());
推测某种类/模板结构已经被用来产生看起来像流控制结构的东西,但作为表达式而不是语句。这在现代c++中是惯用的吗?它有名字吗?
这不是习惯用法。它是一种断言和返回值检查。有些人/文档将这样的需求称为返回值约束,其他人认为它们是函数后设条件的一部分——特别是从契约式设计的角度来看。
(它正在检查cmd
是允许的值之一- F_SETFL
也需要(long_arg & ~kAllowedMask)
tp为0
,否则确保它发出SIGSYS
而不是继续返回不允许的值。)
(没有看谁发布了这个问题-我相信你知道上面所有的R,也许期望"约束"术语-在c++圈子中不广泛使用)
相关文章:
- 这里的以下 OOP 结构是什么?
- 用于筛子的最佳数据结构是什么(即一些被划掉的数字列表)?
- 对于可重定位的多平台安装,理想的 cmake 安装目录结构是什么?
- 表示图像矩阵的理想数据结构是什么?
- 将在 C++ 中输出多维数组内容的 for 循环的结构是什么
- 存储大量会话的最有效数据结构是什么?
- STD :: MAP的基础结构是什么
- 这个结构是什么:"void dot::print(void){"?
- 给定 C# 代码的正确数据结构是什么
- 可用于存储和管理整数集合的最佳C++数据结构是什么
- 存储将经常更新的大数组的正确结构是什么
- 使用 Qt 的简单线程 gui 应用程序的结构是什么?
- 通常用于将输入映射到显示器的数据结构是什么
- A*开放集的最佳数据结构是什么
- C++中的地图数据结构是什么
- 我的火狐扩展程序不起作用。使用C++XPCOM组件的Firefox扩展(XPI文件)的结构是什么?
- 可以处理随机访问和键搜索的数据结构是什么?
- C++ STL 堆栈中使用的基本数据结构是什么?
- (EDIT:MFC)CString类的对象的内部结构是什么
- 初始化为C++的结构是什么