small cleanup
This commit is contained in:
parent
4b9faefa5c
commit
5192ea4977
|
@ -41,22 +41,20 @@ namespace detail {
|
||||||
int test_atomic_assignable(...);
|
int test_atomic_assignable(...);
|
||||||
|
|
||||||
template<typename T, typename U>
|
template<typename T, typename U>
|
||||||
struct CanAtomicAssign {
|
constexpr bool CanAtomicAssign
|
||||||
static constexpr bool value
|
|
||||||
= (sizeof(test_atomic_assignable<T, U>(1)) == sizeof(char));
|
= (sizeof(test_atomic_assignable<T, U>(1)) == sizeof(char));
|
||||||
};
|
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
static inline EnableIf<
|
static inline EnableIf<
|
||||||
CanAtomicAssign<volatile AtomicBase<T> *, T>::value
|
CanAtomicAssign<volatile AtomicBase<T> *, T>
|
||||||
> atomic_init(volatile AtomicBase<T> *a, T v) {
|
> atomic_init(volatile AtomicBase<T> *a, T v) {
|
||||||
a->p_value = v;
|
a->p_value = v;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
static inline EnableIf<
|
static inline EnableIf<
|
||||||
!CanAtomicAssign<volatile AtomicBase<T> *, T>::value &&
|
!CanAtomicAssign<volatile AtomicBase<T> *, T> &&
|
||||||
CanAtomicAssign< AtomicBase<T> *, T>::value
|
CanAtomicAssign< AtomicBase<T> *, T>
|
||||||
> atomic_init(volatile AtomicBase<T> *a, T v) {
|
> atomic_init(volatile AtomicBase<T> *a, T v) {
|
||||||
volatile char *to = (volatile char *)(&a->p_value);
|
volatile char *to = (volatile char *)(&a->p_value);
|
||||||
volatile char *end = to + sizeof(T);
|
volatile char *end = to + sizeof(T);
|
||||||
|
|
Loading…
Reference in a new issue