实验::可选的 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 构造函数 的相关文章

  • SSH 主机密钥指纹与模式 C# WinSCP 不匹配

    我尝试通过 WinSCP 使用 C 连接到 FTPS 服务器 但收到此错误 SSH 主机密钥指纹 与模式不匹配 经过大量研究 我相信这与密钥的长度有关 当使用 服务器和协议信息 下的界面进行连接时 我从 WinSCP 获得的密钥是xx xx
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • 为什么 POSIX 允许在只读模式下超出现有文件结尾 (fseek) 进行搜索

    为什么寻找文件结尾很有用 为什么 POSIX 让我们像示例中那样在以只读方式打开的文件中进行查找 c http en cppreference com w c io fseek http en cppreference com w c io
  • 使用 C# 在 WinRT 中获取可用磁盘空间

    DllImport kernel32 dll SetLastError true static extern bool GetDiskFreeSpaceEx string lpDirectoryName out ulong lpFreeBy
  • 写入和读取文本文件 - C# Windows 通用平台应用程序 Windows 10

    有用 但在显示任何内容之前 您必须在文本框中输入内容 我想那是因为我使用了 TextChanged 事件处理程序 如果我希望它在没有用户交互的情况下显示文本文件的内容 我应该使用哪个事件处理程序 因此 我想在按下按钮时将一些数据写入 C W
  • 使用 Google Analytics API 在 C# 中显示信息

    我一整天都在寻找一个好的解决方案 但谷歌发展得太快了 我找不到有效的解决方案 我想做的是 我有一个 Web 应用程序 它有一个管理部分 用户需要登录才能查看信息 在本节中 我想显示来自 GA 的一些数据 例如某些特定网址的综合浏览量 因为我
  • 为什么模板不能位于外部“C”块内?

    这是一个后续问题一个答案 https stackoverflow com questions 4866433 is it possible to typedef a pointer to extern c function type wit
  • A* 之间的差异 pA = 新 A;和 A* pA = 新 A();

    在 C 中 以下两个动态对象创建之间的确切区别是什么 A pA new A A pA new A 我做了一些测试 但似乎在这两种情况下 都调用了默认构造函数 并且仅调用了它 我正在寻找性能方面的任何差异 Thanks If A是 POD 类
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • 是否有比 lex/flex 更好(更现代)的工具来生成 C++ 分词器?

    我最近将源文件解析添加到现有工具中 该工具从复杂的命令行参数生成输出文件 命令行参数变得如此复杂 以至于我们开始允许它们作为一个文件提供 该文件被解析为一个非常大的命令行 但语法仍然很尴尬 因此我添加了使用更合理的语法解析源文件的功能 我使
  • 网络参考共享类

    我用 Java 编写了一些 SOAP Web 服务 在 JBoss 5 1 上运行 其中两个共享一个类 AddressTO Web 服务在我的 ApplycationServer 上正确部署 一切都很顺利 直到我尝试在我的 C 客户端中使用
  • 用 C 实现 Unix shell:检查文件是否可执行

    我正在努力用 C 语言实现 Unix shell 目前正在处理相对路径的问题 特别是在输入命令时 现在 我每次都必须输入可执行文件的完整路径 而我宁愿简单地输入 ls 或 cat 我已经设法获取 PATH 环境变量 我的想法是在 字符处拆分
  • 检查 url 是否指向文件或页面

    我们需要以下内容 如果文件确实是文件 则从 URL 下载该文件 否则 如果它是一个页面 则什么也不做 举个简单的例子 我有以下命令来下载文件 My Computer Network DownloadFile http www wired c
  • 将应用程序从 Microsoft Access 迁移到 VB 或 C#.NET

    我目前正试图说服管理层需要将我们的应用程序之一移植到 NET 该应用程序已经发展成为 Access 中的一个庞然大物 SQL 后端 拥有 700 个链接表 650 个表单 子表单 130 个模块和 850 个查询 我几乎知道这样做的所有主要
  • 在 URL 中发送之前对特殊字符进行百分比编码

    我需要传递特殊字符 如 等 Facebook Twitter 和此类社交网站的 URL 为此 我将这些字符替换为 URL 转义码 return valToEncode Replace 21 Replace 23 Replace 24 Rep
  • 将日期参数传递给对 MVC 操作的 ajax 调用的安全方法

    我有一个 MVC 操作 它的参数之一是DateTime如果我通过 17 07 2012 它会抛出一个异常 指出参数为空但不能有空值 但如果我通过01 07 2012它被解析为Jan 07 2012 我将日期传递给 ajax 调用DD MM
  • GDK3/GTK3窗口更新的精确定时

    我有一个使用 GTK 用 C 语言编写的应用程序 尽管该语言对于这个问题可能并不重要 这个应用程序有全屏gtk window与单个gtk drawing area 对于绘图区域 我已经通过注册了一个刻度回调gtk widget add ti
  • Bing 地图运行时错误 Windows 8.1

    当我运行带有 Bing Map 集成的 Windows 8 1 应用程序时 出现以下错误 Windows UI Xaml Markup XamlParseException 类型的异常 发生在 DistanceApp exe 中 但未在用户
  • 如何使用 ReactiveList 以便在添加新项目时更新 UI

    我正在创建一个带有列表的 Xamarin Forms 应用程序 itemSource 是一个reactiveList 但是 向列表添加新项目不会更新 UI 这样做的正确方法是什么 列表定义 listView new ListView var
  • 将 viewbag 从操作控制器传递到部分视图

    我有一个带有部分视图的 mvc 视图 控制器中有一个 ActionResult 方法 它将返回 PartialView 因此 我需要将 ViewBag 数据从 ActionResult 方法传递到 Partial View 这是我的控制器

随机推荐

  • 检测设备品牌

    我正在从事网络分析工作 我正在使用 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