std::atomic<double>
is supported in the sense that you can create one in your program and it will work under the rules of C++11. You can perform loads and stores with it and do compare-exchange and the like.
The standard specifies that arithmetic operations (+, *, +=, &, etc.) are only provided for atomics of "integral types", so an std::atomic<double>
won't have any of those operations defined.
My understanding is that, because there is little support for fetch-add or any other atomic arithmetic operations for floating point types in hardware in use today, the C++ standard doesn't provide the operators for them because they would have to be implemented inefficiently.
(edit). As an aside, std::atomic<double>
in VS2015RC is lock-free.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…