From 21072c85b64f301f42b6fe0694dcdb0a571a7893 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Sun, 1 Jul 2012 23:19:47 +0200 Subject: QBasicAtomic: add QT_BASIC_ATOMIC_HAS_CONSTRUCTORS macro This macro is defined when the QBasicAtomic* types have constructors. It will be used to simplify maintenance of QBasicAtomic subclasses, as well as classes that aggregate Q(Basic)Atomics and wish to be literal types if possible. Change-Id: I7ab181c58a13ec2195449bbae5b3476b9017a8f2 Reviewed-by: Thiago Macieira --- src/corelib/thread/qbasicatomic.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/corelib/thread/qbasicatomic.h') diff --git a/src/corelib/thread/qbasicatomic.h b/src/corelib/thread/qbasicatomic.h index 8aec250f90..7ca0ab0bca 100644 --- a/src/corelib/thread/qbasicatomic.h +++ b/src/corelib/thread/qbasicatomic.h @@ -118,6 +118,10 @@ QT_END_HEADER // New atomics +#if defined(Q_COMPILER_CONSTEXPR) && defined(Q_COMPILER_DEFAULT_MEMBERS) && defined(Q_COMPILER_DELETE_MEMBERS) +# define QT_BASIC_ATOMIC_HAS_CONSTRUCTORS +#endif + template class QBasicAtomicInteger { @@ -179,7 +183,7 @@ public: T fetchAndAddOrdered(T valueToAdd) Q_DECL_NOTHROW { return Ops::fetchAndAddOrdered(_q_value, valueToAdd); } -#if defined(Q_COMPILER_CONSTEXPR) && defined(Q_COMPILER_DEFAULT_MEMBERS) && defined(Q_COMPILER_DELETE_MEMBERS) +#ifdef QT_BASIC_ATOMIC_HAS_CONSTRUCTORS QBasicAtomicInteger() = default; constexpr QBasicAtomicInteger(T value) Q_DECL_NOTHROW : _q_value(value) {} QBasicAtomicInteger(const QBasicAtomicInteger &) = delete; @@ -243,7 +247,7 @@ public: Type fetchAndAddOrdered(qptrdiff valueToAdd) Q_DECL_NOTHROW { return Ops::fetchAndAddOrdered(_q_value, valueToAdd); } -#if defined(Q_COMPILER_CONSTEXPR) && defined(Q_COMPILER_DEFAULT_MEMBERS) && defined(Q_COMPILER_DELETE_MEMBERS) +#ifdef QT_BASIC_ATOMIC_HAS_CONSTRUCTORS QBasicAtomicPointer() = default; constexpr QBasicAtomicPointer(Type value) Q_DECL_NOTHROW : _q_value(value) {} QBasicAtomicPointer(const QBasicAtomicPointer &) = delete; -- cgit v1.2.3