gpt4 book ai didi

c++ - 如果包含的类型是可平凡复制的类型,则 std::optional 是否会是可平凡复制的类型

转载 作者:IT老高 更新时间:2023-10-28 23:00:38 24 4
gpt4 key购买 nike

如果 std::optional 中的类型 T 是可平凡复制的类型,则 std::optional 将是可平凡复制的。我问,因为我想在原子中使用它,所以以下对于一些可简单复制的类型 T

有效
std::atomic<std::optional<T>>

最佳答案

复制构造函数指定为:

optional(const optional<T>& rhs);
3 Requires: is_copy_constructible_v<T> is true.
4 Effects: If rhs contains a value, initializes the contained value as if direct-non-list-initializing an object of type T with the expression *rhs.
5 Postcondition: bool(rhs) == bool(*this).
6 Throws: Any exception thrown by the selected constructor of T.

这里没有要求 optional可以简单地复制,但是根据 as-if 规则,这里没有什么可以阻止实现选择这样做。例如,在 libstdc++ 实现中,optional<T>对任何 T 都不可轻易复制.

对琐事的唯一明确讨论是,如果 T很容易被破坏,那么 optional<T>也应该是微不足道的。

关于c++ - 如果包含的类型是可平凡复制的类型,则 std::optional 是否会是可平凡复制的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37621982/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com