gpt4 book ai didi

c++ - 为什么 std::atomic 在 Visual C++ 中不是简单的类型?

转载 作者:可可西里 更新时间:2023-11-01 18:19:46 28 4
gpt4 key购买 nike

Folly 库需要 std::atomic<hazptr_obj*>应该是一个普通的类型。这适用于 gcc 和 clang,但对于 Visual C++ 即使对于 std::atomic<int> 也是如此。 .为什么 std::is_trivial返回 false

#include <type_traits>
#include <atomic>

static_assert(
std::is_trivial<std::atomic<int>>::value,
"std::atomic<int> not trivial");

最佳答案

std::atomic 曾经是微不足道的(这需要 Trivially Copyable),但现在不再是了。参见 this answer以获得有关如何以及为何发生变化的详尽解释。

至少在 C++17 中,这使得 VC 兼容,而 gcc 和 clang 不兼容。由于委员会认为这是一个缺陷,因此 VC 也显示了 C++11 和 C++14 所需的行为。

为了将来引用,相关缺陷是DR #1734 , 你可以看到 clang here 的执行状态.我不知道 gcc 的等效状态页面。

关于c++ - 为什么 std::atomic 在 Visual C++ 中不是简单的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48794325/

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