C++17 最新進展報告
C++標準委員會最近在夏威夷的科納召開了一次會議,大家可能關心最新的進展,但是按照以往的情況,某些檔案需要很久才會公開。會議進行的時候,大家都在忙著修訂自己的檔案,會議之後,大會會收集改好的檔案,在幾周之後釋出。但是這一次,委員會修改了他們的系統,所以得到早些版本的檔案非常簡單,這些郵件就是公開的。
我從官方收集與組織了這些資訊,沒有任何我個人的主觀評論。如果你想知道這次會議的主要內容,請閱讀下面的內容(我已經知道了絕大多數關於C++17庫的內容,但是要將其全部寫出來還是需要一定的時間)
C++17核心庫檔案
- P0001R1 棄用register關鍵字
- P0002R1 bool型別不再支援++運算子
- P0012R1 異常成為型別系統的一部分,第五版
- P0061R1 支援__has_include
- P0134R0 引入非靜態成員變數的拷貝建構函式//not sure
- P0136R1 重寫繼承構造器(core issue 1941 et al)
- P0160R0 刪除一元運算子的預設值//Wording for removing defaults for unary folds
C++17庫相關檔案
- P0004R1 棄用過時的iostreams的別名
- P0006R0 採用基於標準庫規範的型別特徵變數模板
- P0092R1 優化
- P0007R1 Constant View:一個::as_const 的輔助函式模板
- P0156R0 可變的lock_guard (Rev. 3)
- P0074R0 使std::owner_less更加靈活
- P0013R1 邏輯運算子型別特徵 (revision 1)
庫基本規範 第二版檔案
- N4531 替換std::rand,版本三
- P0013R1 邏輯運算子型別特徵 (revision 1)[C++17投票通過]
- 這些檔案將會應用於N4529草案,然後進行擬議草案技術規範的投票。
併發規範
- P0159R0 將會作為併發技術規範釋出,屆時可能稍作改動。
並行規範 v2
- N4505草案和P0155R0的”Task Block R5”負責這項工作。
網路規範
- P0112R1草案負責這想工作。
範圍規範
- P0021R0草案負責這項工作。
核心主題
- 1274.常見的非終結符表示式和內嵌初始化列表
- 1391.非推導模板引數到引數型別的轉化
- 1722.lambda函式指標轉換函式應該不例外嗎?
- 1847.部分排序時宣告一致性
- 1863.丟擲物件的型別應該支援std::current_exception()
- 1949.”sequenced after”代替”sequenced before”
- 1975.允許宣告異常型別
- 1981.隱式和顯式的上下文轉換
- 1990.decl-specifier-seq造成的歧義
- 2000.#include之外的標頭檔案名稱
- 2004.常亮表示式中有可變成員的變數
- 2006.Cv-qualified的void型別
- 2015.虛擬函式的odr-use
- 2016.型別轉換函式的描述中可能存在的歧義
- 2019.儲存時間描述中成員引用的省略
- 2024.依賴型別和未解包的引數包
- 2026.Zero-initialization和constexpr
- 2027.指定多個alignas的需求不明
- 2031.&&的不相容
- 2052.模板引數推導vs過載操作符
- 2075.傳遞短初始化列表給陣列引用引數
- 2101.對型別和值的依賴的錯誤說明
- 2120.陣列作為標準佈局類的第一個非靜態成員變數
庫主題
- 1169.num_get不能和strto*完全相容
- 2072.緩衝區容量定義不明確
- 2101.一些型別轉換可能產生非預期的型別
- 2111.處理異常時可能呼叫那些已經刪除的控制程式碼?
- 2119.擴充套件int型別缺少雜湊函式
- 2127.帶raw_storage_iterator的Move-construction
- 2133.過載逗號迭代器
- 2156.無序容器的reserve(n)儲存的是n-1個元素
- 2218.容器如何使用allocator_traits::construct()不夠明確
- 2219.INVOKE-ing一個帶有reference_wrapper的指標作為物件表示式
- 2224.不活躍物件的狀態問題
- 2234.assert()應該允許在常亮表示式中使用
- 2244.關於basic_istream::seekg的issue
- 2250.Library Issue 2207中的Follow-up
- 2259.17.6.5.5規則中有關成員函式的問題
- 2273.regex_match的歧義
- 2336.is_trivially_constructible/is_trivially_assignable結果永遠是false
- 2353.std::next限制過度
- 2367.pair和tuple無引數時不相容is_constructible
- 2380.<cstdlib>應該提供long ::abs(long) 和long long ::abs(long long)嗎?
- 2384.分配器的解除函式需要更好的規範
- 2385.function::assign分配器引數無意義
- 2435.reference_wrapper::operator()的標記應該是被刪除
- 2447.分配器和Volatile-qualified值型別
- 2462.std::ios_base::failure 被過度規範
- 2466.allocator_traits::max_size()預設表現是錯誤的
- 2469.map的[]操作符和unordered_map規則錯誤
- 2473.basic_filebuf對C檔案的相容
- 2476.scoped_allocator_adaptor是不可分配的
- 2477.std::vector::erase()和std::deque::erase()的不一致
- 2483.throw_with_nested()應該使用is_final
- 2484.rethrow_if_nested()是不可實現的
- 2485.常量tuple&&應該過載get()
- 2486.mem_fn()應該提供向前相容
- 2487.bind()不應該是cv-overloaded, 而應該是const-overloaded
- 2489.mem_fn()應該是noexcept的
- 2492.明確comp的需求
- 2495.沒有類似異常安全元素的東西
Library Fundamentals TS v2 Issues
- 2494.[fund.ts.v2] ostream_joiner應該是noexcept的
- 2500.[fund.ts.v2] fundts.memory.smartptr.shared.obs/6 應該適用於cv-unqualified void
- 2515.[fund.ts.v2]observer_ptr的確定操作符不能匹配任何簡介
- 2517.[fund.ts.v2] 兩個propagate_const assignment 操作符返回不正確的型別
- 2526.[fund.ts]experimental::function::swap 條件不正確
更多資訊
以上只是投票通過的部分記錄。每次的會議都會涉及很多工作,不會全都反映在檔案上,比如,有關modules的熱烈討論檔案中就沒有。雖然我幾乎花了所有的時間在庫工作組中,但是還是不能跟進所有的內容。最終版檔案我會在Reddit分享各個模組的進展。
本文作者可以回答大多數有關庫的問題,但是可能回覆略有延遲。可以確定的是,庫的可用性提高了。看起來一切都像小貓一樣溫順可愛,但是如果你去看一眼過載集合,就會發現這些模稜兩可的東西簡直是災難。LWG2451是作為標準庫定義的一個極好的例子,optional<string> opt_str = “meow”;現在還未實現。對於基本規範沒有什麼問題,但是optional的ship-stopper不符合國際標準。在這次會議上,LWG意識到一些issue影響到了variant,問題會牽扯到基本規範。當然了,會議會解決這些問題,你不必經歷這些痛苦。
相關文章
- CRISPR/Cas最新研究進展(2020年12月快報)
- AI賦能商業化加快落地:最新中國人工智慧行業商業化進展報告AI人工智慧行業
- Vol.30 賽貝CYBEX專案進展報告
- Android 架構元件的最新進展 (上篇)Android架構元件
- 深入探討 Room 2.4.0 的最新進展OOM
- 2020 最新 JVM 生態報告JVM
- 最新進展|關於Python治理模式的投票Python模式
- Flink 容錯恢復 2.0 2022 最新進展
- 進度報告
- 糧農組織報告:2020年糧食及農業相關可持續發展目標指標進展報告指標
- HAVE FUN | “飛船計劃”活動最新進展
- 官宣 MAUI 在.NET Preview 3的最新進展UIView
- 上海文創促進會:2024中國城市咖啡發展報告
- Ellen Macarthur:2021年新塑料經濟全球承諾進展報告Mac
- 進度報告12
- 進度報告10
- 進度報告9
- 進度報告6
- 進度報告二
- 谷歌大腦AutoML最新進展:不斷進化的阿米巴網路谷歌TOML
- IOST進展週報2018.04.23—2018.05.01iOS
- OpenSignal:菲律賓最新網路報告
- GWI:Z世代的最新趨勢報告
- NKN專案進展月報:2018.06
- 綠盟科技走進南昌大學,分享《網路安全產業新進展》主題報告產業
- MaxCompute產品最新進展 -- 從馬力到計算力
- 雲棲觀察 | 阿里雲資料庫的最新進展阿里資料庫
- 「推薦系統」 領域的最新進展你知道麼?
- 國務院發展研究中心:2020年中國能源革命進展報告(附下載)
- 國機汽車:中國進口汽車市場發展研究報告
- Sheila :2021年美國大學生進步和發展調查報告
- 利用區塊鏈促進可持續發展:前景與挑戰報告區塊鏈
- TransparentTribe APT組織最新樣本分析報告APT
- 必看!解讀Salesforce最新AI趨勢報告SalesforceAI
- IEA:2020年能源發展報告
- 中國能源發展報告2022
- REITs行業發展研究報告行業
- CDIE中國數字化創新展暨資訊長峰會最新進展
- EMNLP2018-語言理解+對話系統的最新進展