forked from OSchip/llvm-project
c448ea948c
Add deleted volatile copy-assignment operator in the most derived atomic to fix the Bug 41784. The root cause: there is an `operator=(T) volatile` that has better match than the deleted copy-assignment operator of the base class when `this` is `volatile`. The compiler sees that right operand of the assignment operator can be converted to `T` and chooses that path without taking into account the deleted copy-assignment operator of the base class. The current behavior on libstdc++ is different from what we have in libc++. On the same test compilation fails with libstdc++. Proof: https://godbolt.org/z/nebPYd (everything is the same except the -stdlib option). I choose the way with explicit definition of copy-assignment for atomic in the most derived class. But probably we can fix that by moving `operator=(T)` overloads to the base class from both specializations. At first glance, it shouldn't break anything. Differential Revision: https://reviews.llvm.org/D90968 |
||
---|---|---|
.. | ||
benchmarks | ||
cmake | ||
docs | ||
include | ||
lib | ||
src | ||
test | ||
utils | ||
www | ||
.clang-format | ||
.gitignore | ||
CMakeLists.txt | ||
CREDITS.TXT | ||
LICENSE.TXT | ||
TODO.TXT | ||
appveyor-reqs-install.cmd | ||
appveyor.yml |