From 8e67f84706cf8fc404b2525c9f0cf2e96769c824 Mon Sep 17 00:00:00 2001 From: khizmax Date: Tue, 23 Sep 2014 22:18:09 +0400 Subject: [PATCH] Remove CDS_CXX11_EXPLICITLY_DEFAULTED_FUNCTION_SUPPORT macro and emulating code --- cds/compiler/clang/defs.h | 3 --- cds/compiler/cxx11_atomic.h | 29 +---------------------------- cds/compiler/defs.h | 1 + cds/compiler/gcc/defs.h | 3 --- cds/compiler/icl/defs.h | 3 --- cds/compiler/vc/defs.h | 3 --- cds/details/cxx11_features.h | 7 ------- cds/details/marked_ptr.h | 14 -------------- cds/gc/hrc_decl.h | 6 ------ cds/memory/michael/allocator.h | 4 ---- doxygen/cds.doxy | 1 - 11 files changed, 2 insertions(+), 72 deletions(-) diff --git a/cds/compiler/clang/defs.h b/cds/compiler/clang/defs.h index 42c59ed2..b3a054cb 100644 --- a/cds/compiler/clang/defs.h +++ b/cds/compiler/clang/defs.h @@ -28,9 +28,6 @@ // C++11 delete definition ( function declaration = delete) #define CDS_CXX11_DELETE_DEFINITION_SUPPORT -// C++11 explicitly-defaulted function (= default) [std 8.4.2 [dcl.fct.def.default]] -#define CDS_CXX11_EXPLICITLY_DEFAULTED_FUNCTION_SUPPORT - // C++11 inline namespace #define CDS_CXX11_INLINE_NAMESPACE_SUPPORT diff --git a/cds/compiler/cxx11_atomic.h b/cds/compiler/cxx11_atomic.h index 9ad958a6..5508361c 100644 --- a/cds/compiler/cxx11_atomic.h +++ b/cds/compiler/cxx11_atomic.h @@ -1284,12 +1284,7 @@ namespace cds { namespace cxx11_atomic { atomic_noncopyable& operator=(const atomic_noncopyable&); //atomic_noncopyable& operator=(const atomic_noncopyable&) volatile; protected: -# ifdef CDS_CXX11_EXPLICITLY_DEFAULTED_FUNCTION_SUPPORT atomic_noncopyable() = default; -# else - atomic_noncopyable() - {} -# endif }; #endif @@ -1425,12 +1420,7 @@ namespace cds { namespace cxx11_atomic { return atomic_ops::atomic_fetch_xor_explicit( &m_val, val, order ); } -#ifdef CDS_CXX11_EXPLICITLY_DEFAULTED_FUNCTION_SUPPORT atomic_integral() = default; -#else - atomic_integral() CDS_NOEXCEPT - {} -#endif CDS_CONSTEXPR atomic_integral(T val) CDS_NOEXCEPT : m_val(val) {} @@ -1630,12 +1620,7 @@ namespace cds { namespace cxx11_atomic { return compare_exchange_strong( expected, desired, success_order, memory_order_relaxed ); } -#ifdef CDS_CXX11_EXPLICITLY_DEFAULTED_FUNCTION_SUPPORT atomic() = default; -#else - atomic() - {} -#endif CDS_CONSTEXPR atomic(T val) : m_data( val ) {} @@ -1658,7 +1643,7 @@ namespace cds { namespace cxx11_atomic { } }; -#if defined(CDS_CXX11_EXPLICITLY_DEFAULTED_FUNCTION_SUPPORT) && defined(CDS_CXX11_DELETE_DEFINITION_SUPPORT) +#if defined(CDS_CXX11_DELETE_DEFINITION_SUPPORT) # define CDS_DECLARE_ATOMIC_INTEGRAL( _type ) \ template <> \ struct atomic<_type>: public details::atomic_integral<_type> \ @@ -1815,12 +1800,7 @@ namespace cds { namespace cxx11_atomic { return atomic_ops::atomic_fetch_sub_explicit( &m_ptr, offset, order ); } -#ifdef CDS_CXX11_EXPLICITLY_DEFAULTED_FUNCTION_SUPPORT atomic() = default; -#else - atomic() CDS_NOEXCEPT - {} -#endif CDS_CONSTEXPR atomic(T * val) CDS_NOEXCEPT : m_ptr( val ) {} @@ -2201,14 +2181,7 @@ namespace cds { namespace cxx11_atomic { return platform::atomic_flag_tas( &m_Flag, order ); } -#ifdef CDS_CXX11_EXPLICITLY_DEFAULTED_FUNCTION_SUPPORT atomic_flag() = default; -#elif CDS_COMPILER != CDS_COMPILER_MSVC - // MS VC generate error C2552 "non-aggregates cannot be initialized with initializer list" - // when atomic_flag initializes with ATOMIC_FLAG_INIT - atomic_flag() - {} -#endif #ifdef CDS_CXX11_DELETE_DEFINITION_SUPPORT atomic_flag(const atomic_flag&) = delete; diff --git a/cds/compiler/defs.h b/cds/compiler/defs.h index 5ad09b94..5402102c 100644 --- a/cds/compiler/defs.h +++ b/cds/compiler/defs.h @@ -9,6 +9,7 @@ - template alias [CDS_CXX11_TEMPLATE_ALIAS_SUPPORT] - explicit conversion operator [CDS_CXX11_EXPLICIT_CONVERSION_OPERATOR_SUPPORT] - default template argument for function [CDS_CXX11_DEFAULT_FUNCTION_TEMPLATE_ARGS_SUPPORT] + - explicit default functions (=default) [CDS_CXX11_EXPLICITLY_DEFAULTED_FUNCTION_SUPPORT] */ #if CDS_COMPILER == CDS_COMPILER_MSVC diff --git a/cds/compiler/gcc/defs.h b/cds/compiler/gcc/defs.h index 8e0952ca..a142d9ba 100644 --- a/cds/compiler/gcc/defs.h +++ b/cds/compiler/gcc/defs.h @@ -36,9 +36,6 @@ // C++11 delete definition ( function declaration = delete) #define CDS_CXX11_DELETE_DEFINITION_SUPPORT -// C++11 explicitly-defaulted function (= default) [std 8.4.2 [dcl.fct.def.default]] -#define CDS_CXX11_EXPLICITLY_DEFAULTED_FUNCTION_SUPPORT - // Lambda #define CDS_CXX11_LAMBDA_SUPPORT diff --git a/cds/compiler/icl/defs.h b/cds/compiler/icl/defs.h index d0683af7..7b7c311a 100644 --- a/cds/compiler/icl/defs.h +++ b/cds/compiler/icl/defs.h @@ -94,9 +94,6 @@ // C++11 delete definition ( function declaration = delete) #define CDS_CXX11_DELETE_DEFINITION_SUPPORT -// C++11 explicitly-defaulted function (= default) [std 8.4.2 [dcl.fct.def.default]] -#define CDS_CXX11_EXPLICITLY_DEFAULTED_FUNCTION_SUPPORT - // C++11 inline namespace #define CDS_CXX11_INLINE_NAMESPACE_SUPPORT diff --git a/cds/compiler/vc/defs.h b/cds/compiler/vc/defs.h index 9450e904..8be169f1 100644 --- a/cds/compiler/vc/defs.h +++ b/cds/compiler/vc/defs.h @@ -97,9 +97,6 @@ // C++11 delete definition ( function declaration = delete) #define CDS_CXX11_DELETE_DEFINITION_SUPPORT -// C++11 explicitly-defaulted function (= default) [std 8.4.2 [dcl.fct.def.default]] -#define CDS_CXX11_EXPLICITLY_DEFAULTED_FUNCTION_SUPPORT - // C++11 inline namespace //#define CDS_CXX11_INLINE_NAMESPACE_SUPPORT diff --git a/cds/details/cxx11_features.h b/cds/details/cxx11_features.h index cbafeb91..f8166ea3 100644 --- a/cds/details/cxx11_features.h +++ b/cds/details/cxx11_features.h @@ -15,12 +15,5 @@ # define CDS_DELETE_SPECIFIER #endif -// =default function specifier -#ifdef CDS_CXX11_EXPLICITLY_DEFAULTED_FUNCTION_SUPPORT -# define CDS_DEFAULT_SPECIFIER =default -#else -# define CDS_DEFAULT_SPECIFIER -#endif - //@endcond #endif // #ifndef __CDS_DETAILS_CXX11_FEATURES_H diff --git a/cds/details/marked_ptr.h b/cds/details/marked_ptr.h index b656f020..12a9b9ae 100644 --- a/cds/details/marked_ptr.h +++ b/cds/details/marked_ptr.h @@ -52,7 +52,6 @@ namespace cds { *this |= nMask; } -# ifdef CDS_CXX11_EXPLICITLY_DEFAULTED_FUNCTION_SUPPORT /// Copy constructor marked_ptr( marked_ptr const& src ) CDS_NOEXCEPT_DEFAULTED = default; /// Copy-assignment operator @@ -63,19 +62,6 @@ namespace cds { marked_ptr& operator =( marked_ptr&& p ) CDS_NOEXCEPT_DEFAULTED = default; //@endcond # endif -# else - /// Copy constructor - marked_ptr( marked_ptr const& src ) CDS_NOEXCEPT - : m_ptr( src.m_ptr ) - {} - - /// Copy-assignment operator - marked_ptr& operator =( marked_ptr const& p ) CDS_NOEXCEPT - { - m_ptr = p.m_ptr; - return *this; - } -# endif //TODO: make move ctor diff --git a/cds/gc/hrc_decl.h b/cds/gc/hrc_decl.h index bd33362b..ecf5e915 100644 --- a/cds/gc/hrc_decl.h +++ b/cds/gc/hrc_decl.h @@ -145,13 +145,7 @@ namespace cds { namespace gc { //@endcond public: //@cond -# ifdef CDS_CXX11_EXPLICITLY_DEFAULTED_FUNCTION_SUPPORT atomic_ref() = default; -# else - atomic_ref() CDS_NOEXCEPT - : base_class() - {} -# endif explicit CDS_CONSTEXPR atomic_ref(T * p) CDS_NOEXCEPT : base_class( p ) {} diff --git a/cds/memory/michael/allocator.h b/cds/memory/michael/allocator.h index f7efa001..d25fa5ff 100644 --- a/cds/memory/michael/allocator.h +++ b/cds/memory/michael/allocator.h @@ -967,7 +967,6 @@ namespace michael { , nCredits(0) {} -# ifdef CDS_CXX11_EXPLICITLY_DEFAULTED_FUNCTION_SUPPORT active_tag( active_tag const& ) CDS_NOEXCEPT_DEFAULTED = default; ~active_tag() CDS_NOEXCEPT_DEFAULTED = default; active_tag& operator=(active_tag const& ) CDS_NOEXCEPT_DEFAULTED = default; @@ -975,7 +974,6 @@ namespace michael { active_tag( active_tag&& ) CDS_NOEXCEPT_DEFAULTED = default; active_tag& operator=(active_tag&&) CDS_NOEXCEPT_DEFAULTED = default; # endif -# endif /// Returns pointer to superblock descriptor superblock_desc * ptr() const @@ -1026,7 +1024,6 @@ namespace michael { active_tag() CDS_NOEXCEPT : pDesc( nullptr ) {} -# ifdef CDS_CXX11_EXPLICITLY_DEFAULTED_FUNCTION_SUPPORT // Clang 3.1: error: first argument to atomic operation must be a pointer to a trivially-copyable type //active_tag() CDS_NOEXCEPT_DEFAULTED = default; active_tag( active_tag const& ) CDS_NOEXCEPT_DEFAULTED = default; @@ -1036,7 +1033,6 @@ namespace michael { active_tag( active_tag&& ) CDS_NOEXCEPT_DEFAULTED = default; active_tag& operator=(active_tag&&) CDS_NOEXCEPT_DEFAULTED = default; # endif -# endif superblock_desc * ptr() const { return pDesc.ptr(); diff --git a/doxygen/cds.doxy b/doxygen/cds.doxy index 882df3a4..47a235e2 100644 --- a/doxygen/cds.doxy +++ b/doxygen/cds.doxy @@ -1397,7 +1397,6 @@ PREDEFINED = CDS_BUILD_BITS=32 \ cds_std=std \ CDS_URCU_SIGNAL_HANDLING_ENABLED \ CDS_CXX11_DELETE_DEFINITION_SUPPORT \ - CDS_CXX11_EXPLICITLY_DEFAULTED_FUNCTION_SUPPORT \ CDS_CXX11_INLINE_NAMESPACE_SUPPORT \ CDS_CXX11_INLINE_NAMESPACE=inline \ CDS_CXX11_DECLTYPE_SUPPORT \ -- 2.34.1