staticstd::atomic<foo *>bar[CONSTANT_BAZ],是不是初始化了?

static std::atomic<foo *> bar[CONSTANT_BAZ], is it initialized or not?

我有一个全局范围内的原子指针数组。这些是否初始化为 nullptr,或者是否需要手动执行此操作,例如

// Found a reason to use double-braces, but is it needed??
static std::atomic<foo *> bar[CONSTANT_BAZ] {{nullptr}};

原子被视为内置类型(更准确地说,它们有一个微不足道的 default constructor),因此,它们的全局数组将自动零初始化为 nullptr

只有在本地情况下,您才需要手动初始化它,但即便如此,您也不必使用双大括号或 nullptr。这就足够了:

void baz() {
    std::atomic<foo *> bar[CONSTANT_BAZ]{};
}