静态 std::atomic<foo *> bar[CONSTANT_BAZ],是否初始化?



我有一个全局范围的原子指针数组。这些是初始化为nullptr吗,还是有必要手动完成,例如

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

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

仅在本地情况下,您必须手动初始化它,但即使这样,也不必使用双大括号或nullptr。这就足够了:

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

最新更新