簡體   English   中英

如果包含的類型是一個簡單的可復制類型,那么std :: optional是一個簡單的可復制類型

[英]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 ++實現中,對於任何Toptional<T>都不是簡單的可復制。

對瑣碎性的唯一明確討論是,如果T是可以輕易破壞的,那么optional<T>也應該是可以輕易破壞的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM