可选<T>进入C++标准的影响

Implications of optional<T> entering the C++ standard

本文关键字:标准 影响 C++ gt lt 可选 进入      更新时间:2023-10-16

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(根据需要)。