繁体   English   中英

如何删除或更改特定要求的C ++标准修订版?

[英]How do I find the revision of C++ standard, where a specific requirement was removed or changed?

让我举一个具体的例子来说明我的意思。

我有两个C ++标准草案:N4296现在很老了,最近的修订版N4750。 我感兴趣的是一些小节,例如[unord.hash]。 版本N4296要求std::hash提供两种嵌套类型argument_typeresult_type ,但N4750中不再存在此要求。

如何找到修订版本,删除此要求的动机及其动机?

您可以使用的另一个来源是cppreference 他们在展示不同版本标准的不同之处方面做得非常出色。 例如, std::hash页面列出了在C ++ 17中不推荐使用argument_typeresult_type ,在C ++ 20中删除了。 有了这些信息,你至少知道删除发生在C ++ 17和C ++ 20之间的标准版本中,这是很少看的版本。

此外,在至少某些部分中 ,如果存在缺陷报告,则还会在页面上显示指向该缺陷报告的链接。

你仍然需要做一些狩猎,但希望这会缩小你的范围。

这实际上有点难。

个别修订

首先,列出了已关闭的核心语言问题 (以及库问题的等效页面),它为您提供了纸质参考和一些日期信息。

工作组的邮件

标准的源代码 ,可以使用Git工具及其朋友检查其历史记录。 理论上提交日志应该是有用的 - 尽管我建议记下每个标准的最终草案的名称(例如“N3690”这样的单词),以便您可以在标签列表中识别它。

如果您真正寻找引入更改的特定修订版,那么这是您最好的选择。

标准之间

在尝试确定引入更改的标准时 ,我个人倾向于打开单独的标准文档并进行自己的视觉分割。 如果您知道功能的措辞在标准中的位置,并且措辞主要是在一个地方划分,虽然它仍然很耗时,但这种方法很有效。

对于动机,您将寻找原始提案文件。 如果您设法找到进行更改的修订草案,希望有人会交叉引用提案的名称/ ID。

我还发现Google在搜索时会给出一些好的结果,如果你已经对它的内容有一个模糊的概念:例如“C ++ if declament definition for while consistent proposal”。

而且,如果您不介意非权威来源(尽管应该是可靠的),通常会有Stack Overflow答案跟踪C ++标准之间的变化,并附有相关论文的链接。 例如, 这个回答“C ++ 17中有哪些新功能?” ,它引用了你提到的对std::hash的更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM