可选<T>进入C++标准的影响
Implications of optional<T> entering the C++ standard
std::optional<T>
构造最近(?)被用于C 17语言标准。现在,现有API中有很多地方std::optional<T>
是替换返回函数类型的候选人;本质上,这些是试图检索/生产某些东西的函数,不能保证成功:
- 在容器中找到一个元素。
- 通过其密钥访问地图中的值。
- 分配内存
- 从文件或网络上建立输入/输出流
所以,我的问题是:标准委员会是否考虑(甚至接受)对涉及使用std::optional
的API的更改/增加?如果据您所知,标准的哪些部分可能会改变?C 17或更高版本期望发生这种变化?
标准委员会是否正在考虑(甚至接受)对涉及使用
std::optional
的API的更改/增加?
委员会不太可能更改当前的标准库的使用,例如std::pair
,直到将其删除为止。如果他们对此"敏锐",他们将应用类似于std::pair
使用std::tuple
的使用类似的东西。
像这样的休息时间的变化,委员会"已知"对此不利,除非(向后兼容)它们相对确保破裂是最小的,并且变更的优势大于发生的破裂。我认为auto
是这种方法的合理示例。
如果这是标准的哪些部分(据您所知)可能会改变?C 17或更高版本期望发生这种变化?
期望图书馆的新添加将使用库的较新添加。因此,基本上,希望新类使用std::optional
(根据需要)。
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 使用CMake检测支持的C++标准
- 如何理解C++标准N3337中的expr.const.cast子句8
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- 编译标准库类型
- 标准是否使用多余的大括号(例如 T{{{10}}})定义列表初始化?
- 编译器如何在使用SFINAE的函数和标准函数之间确定两者是否可行
- 铸造标准::有没有回到原来的类型
- 为什么擦除方法会影响结束方法
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- this_thread::sleep_for和计时时钟之间的关系是否由C++11标准指定
- 内联如何影响模块接口中的成员函数
- 标准库类型的赋值运算符的引用限定符
- 标准是否严格定义了该程序应该如何编译?
- 如何从Windows应用程序输出到标准?
- 安全到标准:移动会员?
- #include 多个.cpp中的标准文件,与将其 #include 在预编译标头中会影响可执行文件的大小?
- 可选<T>进入C++标准的影响
- POD 对包含标准库容器的结构的影响
- C标准库的可扩展性对C++程序的影响有多大