实验::可选的 nullopt_t 构造函数

2024-02-25

Here http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3793.html#optional.nullopt被描述为nullopt_t and nullopt为了optional建议为 C++ 提供的对象:

struct nullopt_t{see below}; 
constexpr nullopt_t nullopt(unspecified);

[...] nullopt_t 类型不应有默认构造函数。它将是一个 文字类型。常量 nullopt 应使用参数初始化 字面量类型。

其原因在op = {} 语法 http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3793.html#rationale.reset_syntax文件章节:对于op = {}为了明确起见,必须采用一些技巧,其中之一是nullopt_t不能是默认可构造的。

我的问题是文字类型在这里意味着什么?我找到了这个SO post https://stackoverflow.com/questions/18581443/need-clarification-on-definition-of-literal-type。所以在我看来,只需另一个空类就可以了。它也可能是一个构造函数int?

什么是最低限度的符合nullopt_t类是什么样子的?

像这样的东西:

struct nullopt_t_construct_tag_t{};

struct nullopt_t {
  nullopt_t() = delete; // I know declaring it as deleted is redundant
  constexpr nullopt_t(nullopt_t_construct_tag_t) {};
};

constexpr nullopt_t nullopt(nullopt_t_construct_tag_t{});

Or this:

struct nullopt_t {
  nullopt_t() = delete;
  constexpr nullopt_t(int) {};
};

constexpr nullopt_t nullopt(0);

最小的实现是

struct nullopt_t {
    constexpr nullopt_t(int) {}
};

不会隐式声明默认构造函数,[class.ctor]/4:

如果类没有用户声明的构造函数X,一个构造函数 没有参数被隐式声明为默认值(8.4)。

... and nullopt_t可以构造自int,文字类型。
请注意,在您的代码中存在默认构造函数,尽管被定义为已删除。

上面的定义确实满足文字类型的要求:

类型是一个文字类型如果是:
(10.5) — 类类型(第 9 条) 具有以下所有属性:

  • 它有一个简单的析构函数,
  • 它是一种聚合类型(8.5.1)或至少有一个constexpr构造函数 [..] 不是复制或移动构造函数,并且
  • 它的所有非静态数据成员和基类都是非易失性文字类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实验::可选的 nullopt_t 构造函数 的相关文章

  • X11 模式对话框

    如何使用 Xlib 在 X11 中创建模式对话框 模态对话框是一个位于应用程序其他窗口之上的窗口 就像瞬态窗口一样 并且拒绝将焦点给予应用程序的其他窗口 在 Windows 中 当试图从模态窗口夺取焦点时 模态也会通过闪 烁模态窗口的标题栏
  • 自动映射器多对多 stackoverflowException

    我遇到以下映射的堆栈溢出 Mapper CreateMap
  • 平滑手绘曲线

    我有一个允许用户绘制曲线的程序 但这些曲线看起来不太好 它们看起来摇摇欲坠 而且是手绘的 所以我想要一种能够自动平滑它们的算法 我知道平滑过程中存在固有的模糊性 因此它不会每次都完美 但这种算法似乎确实存在于多个绘图包中 并且它们工作得很好
  • 使用 C# 将多个音频样本混合到单个文件中

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个能够创建音频文件 mp3 或 wav 的库 NAudio http www codeple
  • 局部函数声明有什么用处吗?

    大多数像我这样的 C 程序员都曾犯过以下错误 class C int main C c declares a function c taking no arguments returning a C not as intended by m
  • Dapper 在执行时挂起

    我有一个 IDb连接 sql UPDATE 表名 SET json json lastupdate SYSDATE WHERE id id var param new DynamicParameters param Add json jso
  • ContentDialog 未与 UWP 中心对齐

    据我所知 ContentDialog的默认行为应该是使其在 PC 上居中并在移动设备上与顶部对齐 但就我而言 即使在 PC 上我也将其与顶部对齐 但我不明白发生了什么 我正在使用代码隐藏来创建它 这是我正在使用的代码片段 Creates t
  • Monotouch全局异常处理

    我在野外发现了一只令人讨厌的虫子 但我无法确定它的具体情况 有没有办法拥有全局 Try Catch 块 或者有办法处理 Monotouch 中未处理的任何异常 我可以包起来吗UIApplication Main args 在 try cat
  • 组合框下拉位置

    我有一个最大化的表单 其中包含 500px 的组合框控件 停靠在右上角 Width 尝试打开组合框后 列表的一半超出了屏幕 如何强制列表显示在表单中 棘手的问题 我找不到解决这个问题的好办法 只是一个解决方法 添加一个新类并粘贴如下所示的代
  • 无法加载程序集问题

    我收到以下错误 无法加载程序集 错误详细信息 System BadImageFormatException 无法加载文件或程序集 文件 或其依赖项之一 该程序集是由比当前加载的运行时更新的运行时构建的 无法加载 该程序集是使用 Net Fr
  • 如何减少 MinGW g++ 编译器生成的可执行文件的大小?

    我有一个简单的 Hello world C 程序 在 Win XP 下由 MinGW g 编译器编译为 500kB 可执行文件 有人说这是由于iostream的库和静态链接libstdc dll Using s链接器选项有点帮助 减少了 5
  • 在c#中获取没有时间的日期

    我的表上有一列 缺勤日期时间 日期 当我想要获取包含日期的行时 它返回 0 行 这是我的 C 代码 DateTime ClassDate DateTime Parse lblDate Content ToString var Abs dbs
  • 应用程序处于中断模式。您的应用程序已进入中断状态,

    我发现自己遇到了同样的问题here https stackoverflow com questions 36204009 disable break mode page in vs2015 我在 dll 中使用 Windows 窗体 这是针
  • 如何让XmlReader读取C#中的属性?

    我有一个 XML Stream 其中包含以下 XML 内容
  • 我可以将 UseCSharpNullComparisonBehavior 用于单个查询吗?

    我有一个查询 该查询曾经是存储过程 现已转换为 EF 查询 现在已经超时了 使用 SQL Profiler 我可以看到生成的 SQL 的唯一区别是 EF 转变的新行为entity Property value into entity Pro
  • 配置:错误:无法运行C编译的程序

    我正在尝试使用 Debian Wheezy 操作系统在我的 Raspberry Pi 上安装不同的软件 当我运行尝试配置软件时 我尝试安装我得到此输出 checking for C compiler default output file
  • 您对“大规模 C++ 软件设计”的看法 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 正在阅读亚马逊评论 https rads stackoverflow com amzn click com 0201633620 and ACC
  • Xcode 7 调试器不会中断内联标头函数

    过去五年我一直在各种 C 项目中使用 Xcode 没有出现这个问题 今天 我打开了一个较旧的项目 大约 2 年前 并尝试通过在该函数中放置一个活动断点来调试头文件中的内联函数 由于某种原因 调试器不会中断此代码 但是 如果我在调用该函数的
  • 具有四个 && 的 LINQ Where 子句

    我正在尝试在Where 子句中创建一个带有4 个参数的LINQ 查询 这是一个 Windows 8 应用程序项目 我正在使用 SQLite 数据库 SQLite 实现 https github com praeclarum sqlite n
  • 从对列表创建邻接列表类型结构

    在 C 中 我有 class Pair int val1 int val2 我有一个来自以下来源的配对列表 List

随机推荐

  • 检测设备品牌

    我正在从事网络分析工作 我正在使用 JavaScript 客户端和 NodeJS 服务器端 我知道我们可以找到答案设备类型 https stackoverflow com questions 11381673 javascript solu
  • Komodo Edit 禁用自动完成

    我正在使用 Komodo Edit 8 它的自动完成功能非常烦人 当我打字时 for i 它会自动填充 for i in range code 现在我必须手动删除它才能继续输入 我尝试关闭 启用自动自动完成和键入时触发的调用提示 from
  • 在现有播放器上启用 YouTube API

    我有一个嵌入式 YouTube 视频 我希望应用 YouTube API 我使用 jQuery 添加 url 参数 如下所示 demo http jsfiddle net VVEY9 document ready function var
  • java字符串日期转换

    我想在存储字符串之前将其转换为日期 并且我使用了 SimpleDateFormat format new SimpleDateFormat yyyy mm dd Date returnDate format parse date 当我使用样
  • 在 MS SQL Server 2008 中创建序列

    我编写了一个程序 可以在其中请求身份证 有不同类型的身份证 红 蓝 绿 当提出请求时 程序应该生成标识号 数字 数字范围 取决于所请求的卡 Red Card 1 50000 Blue Card 50001 100000 Green Card
  • 为什么 VS Code 在 java 文件中显示 System.out.println() 的这些标签或参数名称?

    我已经安装了java扩展包 这件事从今天才开始发生 不确定这是由于某些 json 设置还是其他原因造成的 See 诸如 s x 和 参数名称之类的随机内容出现在我的打印语句中 https github com redhat develope
  • 如何强制执行不同的线程

    我有一个主线程执行一些 CPU 密集型操作 线程必须为其所有计算持有锁 还有一些其他线程偶尔需要在短时间内使用相同的锁 如果没有其他线程 如何强制主线程偶尔允许其他线程执行而不减慢速度 周期性的 lock release time slee
  • Linq Boolean 返回异常 DROPDOWNLIST 有一个无效的 SelectedValue,因为它不存在于项目列表中

    我有一个绑定到 linq 数据源的下拉列表 此下拉列表显示所有弓箭手编号 除了那些在数据库中状态设置为 false 的弓箭手编号 假设我有一条之前创建的记录 现在我想编辑现在设置为 false 的 Bowzer 我遇到了这个异常 我不知道如
  • apache-commons ftp 检索多个文件

    我正在尝试使用 apache commons net FTP lib 从 FTP 服务器获取数据 如果目录中只有 1 个文件 该代码可以正常工作 但在我第二次调用retrieveFileStream 时始终返回 null 有什么想法吗 我编
  • iOS6,UIWebView 和位置:固定

    我们有一个 PhoneGap 应用程序 其导航栏和选项卡栏 实现 为固定位置的 div 参见屏幕 1 在 iOS6 中 当显示键盘时 这些 div 会出现一些奇怪的行为 当我们输入第一个字母时 div 将消失 并显示空白区域 当我们关闭键盘
  • 多处理和 Selenium Python

    我有 3 个驱动程序 Firefox 浏览器 我希望它们能够do something在网站列表中 我有一个工人定义为 def worker browser queue while True id queue get True obj Rev
  • 在elasticsearch上查找具有空字符串值的文档

    我一直在尝试使用elasticsearch 仅过滤那些正文中包含空字符串的文档 到目前为止我还没有运气 在继续之前 我应该提到我已经尝试过many 解决方案 在 Interwebz 和 StackOverflow 上传播 因此 下面是我尝试
  • .NET LocalReport / .rdlc AppDomain 问题

    我正在使用 Microsoft Reporting WebForms LocalReport 和 rdlc 报告文件生成 pdf s 这是在 Windows 服务 NET 4 6 x64 VS2015 的后台完成的 我有两个问题 Windo
  • 多个 canActivate 防护在第一次失败时全部运行

    我有一条有两个人的路线canActivate警卫 AuthGuard and RoleGuard 首先 AuthGuard 检查用户是否已登录 如果没有 则重定向到登录页面 第二个检查用户是否定义了允许查看页面的角色 如果没有 则重定向到未
  • 为什么 imagemagick 中的 PNG 图像的 readimage 和 writeimage 需要花费大量时间?

    我正在使用 Imagemagick 版本 7 0 5 4 来执行图像处理操作 例如裁剪 调整大小等去图形 https github com gographics imagick图书馆 我还管理一个魔法棒对象池 Features Cipher
  • 常量折叠的具体规则是什么?

    我刚刚意识到 CPython 似乎对表示相同值的常量表达式的处理方式与常量折叠不同 例如 gt gt gt import dis gt gt gt dis dis 2 66 1 0 LOAD CONST 0 2 2 LOAD CONST 1
  • BigQuery 的速度是否足以满足实时现场请求

    我正在研究是否可以使用 BigQuery 及其 API 根据访问者查看的内容进行现场查询 因此 响应时间至关重要 我加载了一个包含 10k 行 4 列 的非常简单的结构化数据集 并运行了一个非常简单的查询 这需要 1 到 2 秒的时间 希望
  • CorFlags.exe /32BIT+ 如何工作?

    我想我的问题是关于CLR http en wikipedia org wiki Common Language Runtime装载机 我想了解背后的机制CorFlags exe http msdn microsoft com en us l
  • 无法按升序对列表进行排序

    Map
  • 实验::可选的 nullopt_t 构造函数

    Here http www open std org JTC1 SC22 WG21 docs papers 2013 n3793 html optional nullopt被描述为nullopt t and nullopt为了optiona