[英]Will std::optional be a trivially copyable type if the contained type is a trivially copyable type
如果std :: optional中的類型T是一個簡單的可復制類型,那么std :: optional是可以輕易復制的。 我問,因為我想在原子中使用它,因此以下對於一些簡單的可復制類型T有效
std::atomic<std::optional<T>>
復制構造函數指定為:
optional(const optional<T>& rhs);
3 要求:is_copy_constructible_v<T>
為true
。
4 效果:如果rhs
包含一個值,則初始化包含的值,就像使用表達式*rhs
直接非列表初始化類型為T
的對象一樣。
5 后置條件:bool(rhs) == bool(*this)
。
6 拋出:選定的T
構造函數拋出的任何異常。
這里沒有什么要求 optional
是可以輕易復制的,但是按照as-if規則,這里沒有任何東西阻止實現選擇這樣做。 例如,在libstdc ++實現中,對於任何T
, optional<T>
都不是簡單的可復制。
對瑣碎性的唯一明確討論是,如果T
是可以輕易破壞的,那么optional<T>
也應該是可以輕易破壞的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.