在C 草案中第一段談論的是陣列提供存盤的情況:
如果在與另一個物件 e 型別“N 無符號字符陣列”或“N std :: 位元組陣列”([cstddef.syn])相關聯的存盤中創建了一個完整物件([expr.new]) ,該陣列為創建的物件提供存盤,如果:...
在這些情況下,陣列是指一個unsigned char C[1]或std::array? 如果是第一種情況,例如,我可以在現有陣列 C 的相同記憶體地址處創建一個物件,然后該陣列 C 將提供 storage,但前提是它的型別是上面參考的型別?如果它只是一個char陣列而不是一個unsigned char陣列會發生什么?
uj5u.com熱心網友回復:
在這些情況下,陣列是指無符號字符 C[1] 還是 std::array?
“陣列”指的是諸如T[N].
“陣列”不是指std::array. std::array不是陣列,而是類模板。std::array可能包含一個陣列作為成員。
array(帶有表示代碼的格式)是指std::array.
如果它只是一個字符陣列而不是一個無符號字符陣列會發生什么?
嚴格的解釋是,除非由另一條規則指定,否則沒有其他型別可以為另一個物件“提供存盤”。
松散的解釋是其他型別可能提供存盤,并且遵循參考規則的條件不適用于它們。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/355578.html
