Created on 2010-08-25.00:00:00 last changed 171 months ago
Proposed resolution:
Solved by n3193.
[ 2010 Batavia ]
Resolved by adoption of n3193.
[ 2010-10-27 Daniel adds: ]
Accepting n3164 would solve this issue by replacing atomic_bool by atomic<bool>.
[ Proposed resolution as of NB comment: ]
Change [atomics.types.integral] as indicated:
namespace std { typedef struct atomic_bool { [..] bool operator=(bool) volatile; bool operator=(bool); } atomic_bool; [..] }
Addresses GB-132, US-157
The atomic_itype types and atomic_address have two overloads of operator=; one is volatile qualified, and the other is not. atomic_bool only has the volatile qualified version:
bool operator=(bool) volatile;
On a non-volatile-qualified object this is ambiguous with the deleted copy-assignment operator
atomic_bool& operator=(atomic_bool const&) = delete;
due to the need for a single standard conversion in each case when assigning a bool to an atomic_bool as in:
atomic_bool b; b = true;
The conversions are:
atomic_bool& → atomic_bool volatile&
vs
bool → atomic_bool
History | |||
---|---|---|---|
Date | User | Action | Args |
2010-11-18 12:46:23 | admin | set | messages: + msg5385 |
2010-11-18 12:46:23 | admin | set | messages: + msg5384 |
2010-11-18 12:46:23 | admin | set | status: nad editorial -> resolved |
2010-11-13 13:49:23 | admin | set | status: open -> nad editorial |
2010-10-27 20:02:48 | admin | set | messages: + msg5161 |
2010-10-27 20:02:48 | admin | set | messages: + msg5160 |
2010-08-25 00:00:00 | admin | create |