[英]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_type
和result_type
,但N4750中不再存在此要求。
如何找到修訂版本,刪除此要求的動機及其動機?
您可以使用的另一個來源是cppreference 。 他們在展示不同版本標准的不同之處方面做得非常出色。 例如, std::hash
頁面列出了在C ++ 17中不推薦使用argument_type
和result_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.