命名要求
來自 cppreference.com
< cpp
本頁面列出的命名要求是C++標準規範文字中用於定義標準庫預期行為的命名要求。
程式設計師有責任確保庫模板使用滿足這些要求的模板引數進行例項化。否則可能導致非常複雜的編譯器診斷資訊。
其中一些要求在C++20中透過概念語言特性得到了形式化。
基本 | ||
指定該型別的物件可以預設構造 (命名要求) | ||
(C++11) |
指定該型別的物件可以從右值構造 (命名要求) | |
指定該型別的物件可以從左值構造 (命名要求) | ||
(C++11) |
指定該型別的物件可以從右值賦值 (命名要求) | |
指定該型別的物件可以從左值賦值 (命名要求) | ||
指定該型別的物件可以被銷燬 (命名要求) | ||
型別屬性 | ||
注意:標準未定義在此子類別中指定名稱的命名要求。 這些是核心語言定義的型別類別。它們在此處作為命名要求僅為保持一致性。 | ||
不是陣列型別或類型別的物件型別 (命名要求) | ||
(C++20 中已棄用) |
POD(Plain Old Data)型別,與C struct 相容 (命名要求) | |
(C++11) |
這些型別的物件在複製其底層位元組後可以保持其值 (命名要求) | |
(C++11)(C++26 中已棄用) |
這些型別的物件可以進行平凡構造和複製 (命名要求) | |
(C++11) |
這些型別對於與其他程式語言編寫的程式碼進行通訊很有用 (命名要求) | |
這些型別的物件可以隱式建立,並且它們的生命週期可以隱式開始 (命名要求) | ||
全庫範圍 | ||
布林操作(operator&&, operator||, 和 operator!)具有通常語義 (命名要求) | ||
operator== 是等價關係(命名要求) | ||
operator< 是嚴格弱序關係(命名要求) | ||
可以使用非限定的非成員函式呼叫 swap() 進行交換 (命名要求) | ||
(C++11) |
一個解引用為Swappable型別的LegacyIterator (命名要求) | |
(C++11) |
支援空值的類指標型別 (命名要求) | |
(C++11) |
一個FunctionObject,對於不同值的輸入,產生相同輸出的機率很低 (命名要求) | |
包含分配資訊的類型別 (命名要求) | ||
可以使用函式呼叫語法呼叫的物件 (命名要求) | ||
定義了 invoke 操作的型別 (命名要求) | ||
一個FunctionObject,對於一個引數,在不修改它的情況下返回一個可轉換為bool的值 (命名要求) | ||
一個FunctionObject,對於兩個引數,在不修改它們的情況下返回一個可轉換為bool的值 (命名要求) | ||
一個建立序關係的BinaryPredicate (命名要求) |
Container(容器) | |
允許使用迭代器訪問元素的資料結構 (命名要求) | |
使用雙向迭代器的容器 (命名要求) | |
使用分配器的容器 (命名要求) | |
元素線性儲存的容器 (命名要求) | |
(C++17) |
元素儲存在相鄰記憶體地址的容器 (命名要求) |
透過將元素與鍵關聯來儲存元素的容器 (命名要求) | |
透過將元素與鍵關聯,並存儲在桶中的容器 (命名要求) | |
容器元素 | |
(C++11) |
元素可以在未初始化儲存中預設構造 (命名要求) |
(C++11) |
元素可以在未初始化儲存中複製構造 (命名要求) |
(C++11) |
元素可以在未初始化儲存中移動構造 (命名要求) |
(C++11) |
元素可以在未初始化儲存中構造 (命名要求) |
(C++11) |
元素可以使用分配器銷燬 (命名要求) |
迭代器 (Iterator) | |
訪問某些資料結構內資料的通用概念 (命名要求) | |
可用於讀取資料的迭代器 (命名要求) | |
可用於寫入資料的迭代器 (命名要求) | |
可用於多次讀取資料的迭代器 (命名要求) | |
可遞增和遞減的迭代器 (命名要求) | |
可在常數時間內前進的迭代器 (命名要求) | |
指向連續分配元素的迭代器 (命名要求) | |
(C++20) |
可在常量表達式求值期間使用的迭代器 (命名要求) |
流I/O函式 | |
一個不跳過前導空格並計算已處理字元的流輸入函式 (命名要求) | |
一個跳過前導空格的流輸入函式 (命名要求) | |
一個基本的流輸出函式 (命名要求) | |
一個在出錯時設定failbit並返回流引用的流輸出函式 (命名要求) | |
格式化器 | |
(C++20) |
抽象給定格式化引數型別和字元型別的格式化操作 (命名要求) |
(C++20) |
定義格式化庫使用的函式 (命名要求) |
隨機數生成 | |
(C++11) |
消耗一個整數序列並生成一個32位無符號值序列 (命名要求) |
返回均勻分佈的隨機無符號整數 (命名要求) | |
(C++11) |
一個由種子定義的確定性UniformRandomBitGenerator (命名要求) |
一個轉換另一個RandomNumberEngine輸出的RandomNumberEngine (命名要求) | |
根據給定數學機率密度函式返回隨機數 (命名要求) | |
併發 | |
(C++11) |
為執行代理(即執行緒)提供獨佔所有權語義 (命名要求) |
(C++11) |
一個支援嘗試獲取鎖的BasicLockable (命名要求) |
(C++11) |
一個支援限時獲取鎖的Lockable (命名要求) |
(C++14) |
為執行代理(即執行緒)提供共享所有權語義 (命名要求) |
(C++14) |
一個支援限時獲取鎖的SharedLockable (命名要求) |
(C++11) |
一個防止資料競爭並進行順序一致同步的Lockable (命名要求) |
(C++11) |
一個防止資料競爭並進行順序一致同步的TimedLockable (命名要求) |
(C++17) |
一個支援共享所有權語義的Mutex (命名要求) |
(C++14) |
一個支援共享所有權語義的TimedMutex (命名要求) |
範圍 | |
(C++20) |
一個FunctionObject,它從viewable_range 和額外引數建立一個範圍介面卡(命名要求) |
一個支援管道運算子的FunctionObject (命名要求) | |
多維檢視定製 | |
(C++23) |
控制mdspan中多維索引的對映 (命名要求) |
(C++23) |
一個包含LayoutMapping要求的策略 (命名要求) |
(C++23) |
一個控制mdspan中資料控制代碼訪問的策略 (命名要求) |
其他 | |
(C++11) |
描述型別的屬性 (命名要求) |
(C++11) |
描述兩種型別之間的關係 (命名要求) |
(C++11) |
修改型別的屬性 (命名要求) |
(C++11) |
聚合持續時間、時間點和獲取當前時間點的函式 (命名要求) |
(C++11) |
一個不丟擲異常的Clock (命名要求) |
為字元型別定義型別和函式 (命名要求) | |
位集、整數或列舉 (命名要求) | |
初始化實際上等於賦值的型別 (命名要求) | |
(C++11) |
定義正則表示式庫使用的型別和函式 (命名要求) |
(C++11) |
具有 constexpr 建構函式的型別 (命名要求) |
本節不完整 原因:還有其他缺失的要求嗎? |