Remove CDS_CXX11_DELETE_DEFINITION_SUPPORT and emulating code
authorkhizmax <libcds.dev@gmail.com>
Tue, 23 Sep 2014 18:24:45 +0000 (22:24 +0400)
committerkhizmax <libcds.dev@gmail.com>
Tue, 23 Sep 2014 18:24:45 +0000 (22:24 +0400)
12 files changed:
cds/compiler/clang/defs.h
cds/compiler/cxx11_atomic.h
cds/compiler/defs.h
cds/compiler/gcc/defs.h
cds/compiler/icl/defs.h
cds/compiler/vc/defs.h
cds/details/cxx11_features.h [deleted file]
cds/details/defs.h
cds/details/marked_ptr.h
doxygen/cds.doxy
projects/Win/vc12/cds.vcxproj
projects/Win/vc12/cds.vcxproj.filters

index b3a054cb54bd09f6c21e841712ff1de95c3213be..4f7244904e13e954480e1d4ed1cbafb3f9dc2888 100644 (file)
@@ -25,9 +25,6 @@
 
 #define alignof __alignof__
 
-// C++11 delete definition ( function declaration = delete)
-#define CDS_CXX11_DELETE_DEFINITION_SUPPORT
-
 // C++11 inline namespace
 #define CDS_CXX11_INLINE_NAMESPACE_SUPPORT
 
index 5508361c10d58162070c3403dcc3ebf09e60d8e3..726a241abfb7217e0f52e328e23bebc07a0b6bba 100644 (file)
@@ -1276,23 +1276,8 @@ namespace cds { namespace cxx11_atomic {
             }
         };
 
-#ifndef CDS_CXX11_DELETE_DEFINITION_SUPPORT
-        class atomic_noncopyable
-        {
-        private:
-            atomic_noncopyable(const atomic_noncopyable&);
-            atomic_noncopyable& operator=(const atomic_noncopyable&);
-            //atomic_noncopyable& operator=(const atomic_noncopyable&) volatile;
-        protected:
-            atomic_noncopyable() = default;
-        };
-#endif
-
         template <typename T>
         struct atomic_integral
-#ifndef CDS_CXX11_DELETE_DEFINITION_SUPPORT
-            : atomic_noncopyable
-#endif
         {
         private:
             typename cds::details::aligned_type<T, sizeof(T)>::type volatile m_val;
@@ -1425,11 +1410,10 @@ namespace cds { namespace cxx11_atomic {
                 : m_val(val)
                 {}
 
-#ifdef CDS_CXX11_DELETE_DEFINITION_SUPPORT
             atomic_integral(const atomic_integral&) = delete;
             atomic_integral& operator=(const atomic_integral&) = delete;
             atomic_integral& operator=(const atomic_integral&) volatile = delete;
-#endif
+
             T operator=(T val) volatile CDS_NOEXCEPT
             {
                 store(val);
@@ -1533,9 +1517,6 @@ namespace cds { namespace cxx11_atomic {
 
     template <class T>
     struct atomic
-#ifndef CDS_CXX11_DELETE_DEFINITION_SUPPORT
-        : details::atomic_noncopyable
-#endif
     {
     private:
         typedef details::atomic_generic_ops<T, sizeof(T), typename details::select_primary_type<T>::type >  atomic_ops;
@@ -1625,11 +1606,9 @@ namespace cds { namespace cxx11_atomic {
             : m_data( val )
             {}
 
-#ifdef CDS_CXX11_DELETE_DEFINITION_SUPPORT
         atomic(const atomic&) = delete;
         atomic& operator=(const atomic&) = delete;
         atomic& operator=(const atomic&) volatile = delete;
-#endif
 
         T operator=(T val) volatile CDS_NOEXCEPT
         {
@@ -1643,7 +1622,6 @@ namespace cds { namespace cxx11_atomic {
         }
     };
 
-#if defined(CDS_CXX11_DELETE_DEFINITION_SUPPORT)
 #   define CDS_DECLARE_ATOMIC_INTEGRAL( _type ) \
     template <> \
     struct atomic<_type>: public details::atomic_integral<_type> \
@@ -1659,20 +1637,6 @@ namespace cds { namespace cxx11_atomic {
         _type operator=(_type val) volatile CDS_NOEXCEPT { return base_class::operator=(val); } \
         _type operator=(_type val) CDS_NOEXCEPT { return base_class::operator=(val); } \
     };
-#else
-#   define CDS_DECLARE_ATOMIC_INTEGRAL( _type ) \
-    template <> \
-    struct atomic<_type>: public details::atomic_integral<_type> \
-    { \
-    private: \
-        typedef details::atomic_integral<_type>   base_class  ; \
-    public: \
-        atomic() {} \
-        atomic(_type val) CDS_NOEXCEPT : base_class(val) {} \
-        _type operator=(_type val) volatile CDS_NOEXCEPT { return base_class::operator=(val); } \
-        _type operator=(_type val) CDS_NOEXCEPT { return base_class::operator=(val); } \
-    };
-#endif
 
     CDS_DECLARE_ATOMIC_INTEGRAL(char)
     CDS_DECLARE_ATOMIC_INTEGRAL(signed char)
@@ -1696,9 +1660,6 @@ namespace cds { namespace cxx11_atomic {
 
     template <typename T>
     class atomic<T *>
-#ifndef CDS_CXX11_DELETE_DEFINITION_SUPPORT
-        : details::atomic_noncopyable
-#endif
     {
     private:
         T * volatile m_ptr;
@@ -1805,11 +1766,9 @@ namespace cds { namespace cxx11_atomic {
             : m_ptr( val )
         {}
 
-#ifdef CDS_CXX11_DELETE_DEFINITION_SUPPORT
         atomic(const atomic&) = delete;
         atomic& operator=(const atomic&) = delete;
         atomic& operator=(const atomic&) volatile = delete;
-#endif
 
         T * operator=(T * val) volatile CDS_NOEXCEPT
         {
@@ -2183,19 +2142,9 @@ namespace cds { namespace cxx11_atomic {
 
         atomic_flag() = default;
 
-#ifdef CDS_CXX11_DELETE_DEFINITION_SUPPORT
         atomic_flag(const atomic_flag&) = delete;
         atomic_flag& operator=(const atomic_flag&) = delete;
         atomic_flag& operator=(const atomic_flag&) volatile = delete;
-#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
-    private:
-        atomic_flag(const atomic_flag&);
-        atomic_flag& operator=(const atomic_flag&);
-        atomic_flag& operator=(const atomic_flag&) volatile;
-    public:
-#endif
 
         platform::atomic_flag_type volatile m_Flag;
     } atomic_flag;
index 5402102c660a2dd42853f112274514fa87702eb7..227669a75e1531815e8137954b0953ccff543b98 100644 (file)
@@ -10,6 +10,7 @@
     - 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]
+    - =delete [CDS_CXX11_DELETE_DEFINITION_SUPPORT]
 */
 
 #if CDS_COMPILER == CDS_COMPILER_MSVC
index a142d9ba853d869826b1990bdd4e023ad5ce4b41..a739d3d396208613714a9b2065f56df5f06f20d1 100644 (file)
@@ -33,9 +33,6 @@
 // C++11 inline namespace
 #define CDS_CXX11_INLINE_NAMESPACE_SUPPORT
 
-// C++11 delete definition ( function declaration = delete)
-#define CDS_CXX11_DELETE_DEFINITION_SUPPORT
-
 // Lambda
 #define CDS_CXX11_LAMBDA_SUPPORT
 
index 7b7c311a3d7c35968d311f196251c3df52c42f00..8094f321ef882ddf48ab95442b192e1c7c183316 100644 (file)
@@ -91,9 +91,6 @@
 #define CDS_RVALUE_SUPPORT
 #define CDS_MOVE_SEMANTICS_SUPPORT
 
-// C++11 delete definition ( function declaration = delete)
-#define CDS_CXX11_DELETE_DEFINITION_SUPPORT
-
 // C++11 inline namespace
 #define CDS_CXX11_INLINE_NAMESPACE_SUPPORT
 
index 8be169f1d7e34b4036224ce48b8f107d3e283cc0..f359560a85fb7d294843ec77c92f2810c8fc581d 100644 (file)
@@ -94,9 +94,6 @@
 #define CDS_RVALUE_SUPPORT
 #define CDS_MOVE_SEMANTICS_SUPPORT
 
-// C++11 delete definition ( function declaration = delete)
-#define CDS_CXX11_DELETE_DEFINITION_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
deleted file mode 100644 (file)
index f8166ea..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-//$$CDS-header$$
-
-#ifndef __CDS_DETAILS_CXX11_FEATURES_H
-#define __CDS_DETAILS_CXX11_FEATURES_H
-//@cond
-
-#ifndef __CDS_DEFS_H
-#   error "<cds/details/cxx11_features.h> cannot be included directly, use <cds/details/defs.h> instead"
-#endif
-
-// =delete function specifier
-#ifdef CDS_CXX11_DELETE_DEFINITION_SUPPORT
-#   define CDS_DELETE_SPECIFIER     =delete
-#else
-#   define CDS_DELETE_SPECIFIER
-#endif
-
-//@endcond
-#endif // #ifndef __CDS_DETAILS_CXX11_FEATURES_H
index ea3c05f8dd6d3ad7ca605c9ea5a9369b8adf9317..104b7eceeb23f12c7f163342ff97fd7903b9afd1 100644 (file)
@@ -335,8 +335,6 @@ namespace cds {}
 
 // Compiler-specific defines
 #include <cds/compiler/defs.h>
-// New C++11 features
-#include <cds/details/cxx11_features.h>
 
 #define CDS_NOEXCEPT            CDS_NOEXCEPT_SUPPORT
 #define CDS_NOEXCEPT_( expr )   CDS_NOEXCEPT_SUPPORT_( expr )
index 12a9b9aebcbe90bf64cfcf9283176a0c7370b5c3..b38dec23c8f0b913d664616b493d69b7ee576698 100644 (file)
@@ -336,11 +336,9 @@ CDS_CXX11_ATOMIC_BEGIN_NAMESPACE
             : m_atomic( p )
         {}
 
-#   ifdef CDS_CXX11_DELETE_DEFINITION_SUPPORT
         atomic(const atomic&) = delete;
         atomic& operator=(const atomic&) = delete;
         atomic& operator=(const atomic&) volatile = delete;
-#   endif
 
         marked_ptr operator=(marked_ptr val) volatile CDS_NOEXCEPT
         {
index 47a235e2119837a0b52a87ff45a438e0f0d8bae4..fc59f7133dc24df75377736f3f1b77d7f9b56d31 100644 (file)
@@ -1396,7 +1396,6 @@ PREDEFINED             = CDS_BUILD_BITS=32 \
                          CDS_DOXYGEN_INVOKED \
                          cds_std=std \
                          CDS_URCU_SIGNAL_HANDLING_ENABLED \
-                         CDS_CXX11_DELETE_DEFINITION_SUPPORT \
                          CDS_CXX11_INLINE_NAMESPACE_SUPPORT \
                          CDS_CXX11_INLINE_NAMESPACE=inline \
                          CDS_CXX11_DECLTYPE_SUPPORT \
index a9bb795440e9a95d5180f5a4b70b2923f9cfaba1..0b57040f1bf396aae24dd982ee4319e0848d0fed 100644 (file)
     <ClInclude Include="..\..\..\cds\details\binary_functor_wrapper.h" />\r
     <ClInclude Include="..\..\..\cds\details\bit_reverse_counter.h" />\r
     <ClInclude Include="..\..\..\cds\details\bounded_container.h" />\r
-    <ClInclude Include="..\..\..\cds\details\cxx11_features.h" />\r
     <ClInclude Include="..\..\..\cds\details\hash_functor_selector.h" />\r
     <ClInclude Include="..\..\..\cds\details\lib.h" />\r
     <ClInclude Include="..\..\..\cds\details\numtraits.h" />\r
index 2727785a61d4af0ec6737f87e4f1c646fded2d1b..94a31d4447921e04873d868761f796d5e4ce95c8 100644 (file)
     <ClInclude Include="..\..\..\cds\details\hash_functor_selector.h">\r
       <Filter>Header Files\cds\details</Filter>\r
     </ClInclude>\r
-    <ClInclude Include="..\..\..\cds\details\cxx11_features.h">\r
-      <Filter>Header Files\cds\details</Filter>\r
-    </ClInclude>\r
     <ClInclude Include="..\..\..\cds\gc\all.h">\r
       <Filter>Header Files\cds\gc</Filter>\r
     </ClInclude>\r