原子结构的统一初始化?

Dav*_*vid 8 c++ atomic aggregate-initialization uniform-initialization c++11

struct S
{
    int x;
    int y;
};

std::atomic<S> asd{{1, 2}}; // what should this be? This doesn't work
Run Code Online (Sandbox Code Playgroud)

编辑:这两个{{1, 2}}({1, 2})在G ++,在铛没有工作的工作.clang有解决方法吗?

Pra*_*ian 5

这是铿锵声18097.这是一个讨论这个问题的长线程,似乎clang只支持Tin的标量类型atomic<T>.C++ 11标准明确指出(§29.5/ 1)T可以是任何简单的可复制类型.

问题中显示的两种用法都应该与此构造函数匹配

constexpr atomic(T) noexcept;
Run Code Online (Sandbox Code Playgroud)

我能想到解决这个问题的唯一方法是默认构造atomic<S>然后atomic::store用来初始化对象.

std::atomic<S> asd;
asd.store({1,2});
Run Code Online (Sandbox Code Playgroud)