This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Remove _Safe_container _IsCxx11AllocatorAware template parameter


Hi

_Safe_container _IsCxx11AllocatorAware template allocator is only used if C++11 Abi is not used so I simplified it.

    * include/debug/safe_container.h [_GLIBCXX_USE_CXX11_ABI]
    (_Safe_container<>): Remove _IsCxx11AllocatorAware template parameter.
    * include/debug/string: Adapt.

    Tested under Linux x86_64 with debug mode and active C++11 Abi.


François

diff --git a/libstdc++-v3/include/debug/safe_container.h b/libstdc++-v3/include/debug/safe_container.h
index 3d44c15..e985c2a 100644
--- a/libstdc++-v3/include/debug/safe_container.h
+++ b/libstdc++-v3/include/debug/safe_container.h
@@ -36,8 +36,12 @@ namespace __gnu_debug
   /// Safe class dealing with some allocator dependent operations.
   template<typename _SafeContainer,
 	   typename _Alloc,
-	   template<typename> class _SafeBase,
-	   bool _IsCxx11AllocatorAware = true>
+	   template<typename> class _SafeBase
+#if _GLIBCXX_USE_CXX11_ABI
+	   >
+#else
+	   , bool _IsCxx11AllocatorAware = true>
+#endif
     class _Safe_container
     : public _SafeBase<_SafeContainer>
     {
@@ -82,8 +86,10 @@ namespace __gnu_debug
       {
 	__glibcxx_check_self_move_assign(__x);
 
+#  if !_GLIBCXX_USE_CXX11_ABI
 	if (_IsCxx11AllocatorAware)
 	  {
+#  endif
 	    typedef __gnu_cxx::__alloc_traits<_Alloc> _Alloc_traits;
 
 	    bool __xfer_memory = _Alloc_traits::_S_propagate_on_move_assign()
@@ -92,9 +98,11 @@ namespace __gnu_debug
 	      _Base::_M_swap(__x);
 	    else
 	      this->_M_invalidate_all();
+#  if !_GLIBCXX_USE_CXX11_ABI
 	  }
 	else
 	  _Base::_M_swap(__x);
+#  endif
 
 	__x._M_invalidate_all();
 	return *this;
@@ -103,7 +111,9 @@ namespace __gnu_debug
       void
       _M_swap(_Safe_container& __x) noexcept
       {
+#  if !_GLIBCXX_USE_CXX11_ABI
 	if (_IsCxx11AllocatorAware)
+#  endif
 	  {
 	    typedef __gnu_cxx::__alloc_traits<_Alloc> _Alloc_traits;
 
diff --git a/libstdc++-v3/include/debug/string b/libstdc++-v3/include/debug/string
index 9d4057b..8fd292a 100644
--- a/libstdc++-v3/include/debug/string
+++ b/libstdc++-v3/include/debug/string
@@ -44,13 +44,20 @@ template<typename _CharT, typename _Traits = std::char_traits<_CharT>,
   class basic_string
   : public __gnu_debug::_Safe_container<
       basic_string<_CharT, _Traits, _Allocator>,
-      _Allocator, _Safe_sequence, bool(_GLIBCXX_USE_CXX11_ABI)>,
+#if _GLIBCXX_USE_CXX11_ABI
+      _Allocator, _Safe_sequence>,
+#else
+      _Allocator, _Safe_sequence, false>,
+#endif
     public std::basic_string<_CharT, _Traits, _Allocator>
   {
     typedef std::basic_string<_CharT, _Traits, _Allocator>	_Base;
     typedef __gnu_debug::_Safe_container<
-      basic_string, _Allocator, _Safe_sequence, bool(_GLIBCXX_USE_CXX11_ABI)>
-      _Safe;
+#if _GLIBCXX_USE_CXX11_ABI
+      basic_string, _Allocator, _Safe_sequence> _Safe;
+#else
+      basic_string, _Allocator, _Safe_sequence, false> _Safe;
+#endif
 
   public:
     // types:


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]