testsuite_allocator.h (tracker_allocator::construct): Update to C++0x definition...
authorJonathan Wakely <jwakely.gcc@gmail.com>
Sat, 4 Jun 2011 17:17:57 +0000 (17:17 +0000)
committerJonathan Wakely <redi@gcc.gnu.org>
Sat, 4 Jun 2011 17:17:57 +0000 (18:17 +0100)
2011-06-04  Jonathan Wakely  <jwakely.gcc@gmail.com>

* testsuite/util/testsuite_allocator.h (tracker_allocator::construct):
Update to C++0x definition using type to construct as template
parameter.
(tracker_allocator::destroy): Likewise for type to destroy.
(uneq_allocator::construct, uneq_allocator::destroy): Likewise.

From-SVN: r174647

libstdc++-v3/ChangeLog
libstdc++-v3/testsuite/util/testsuite_allocator.h

index 0aac5ae28ed9cddc28b7921b5c3ec3be477c0e19..c90eb5c3b28bc4ba4cb4c0ab408b7e53d5dc0f4e 100644 (file)
@@ -1,3 +1,11 @@
+2011-06-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
+
+       * testsuite/util/testsuite_allocator.h (tracker_allocator::construct):
+       Update to C++0x definition using type to construct as template
+       parameter.
+       (tracker_allocator::destroy): Likewise for type to destroy.
+       (uneq_allocator::construct, uneq_allocator::destroy): Likewise.
+
 2011-06-01  Paolo Carlini  <paolo.carlini@oracle.com>
 
        * include/bits/hashtable.h (_Hashtable<>::_Hashtable(_Hashtable&&)):
index 73622f1a7a19664dc8bc9b5fc2b4ce7aa19bc74b..e472835c84ede04b8325bf429b51653f68c9da7e 100644 (file)
@@ -138,6 +138,23 @@ namespace __gnu_test
     allocate(size_type n, const void* = 0)
     { return static_cast<pointer>(counter_type::allocate(n * sizeof(T))); }
 
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+    template<typename U, typename... Args>
+      void
+      construct(U* p, Args&&... args) 
+      {
+       ::new((void *)p) U(std::forward<Args>(args)...);
+       counter_type::construct();
+      }
+
+    template<typename U>
+      void
+      destroy(U* p)
+      {
+       p->~U();
+       counter_type::destroy();
+      }
+#else
     void
     construct(pointer p, const T& value)
     {
@@ -145,22 +162,13 @@ namespace __gnu_test
       counter_type::construct();
     }
 
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
-      template<typename... Args>
-        void
-        construct(pointer p, Args&&... args) 
-       {
-         ::new((void *)p) T(std::forward<Args>(args)...);
-         counter_type::construct();
-       }
-#endif
-
     void
     destroy(pointer p)
     {
       p->~T();
       counter_type::destroy();
     }
+#endif
 
     void
     deallocate(pointer p, size_type num)
@@ -313,34 +321,35 @@ namespace __gnu_test
       max_size() const throw() 
       { return size_type(-1) / sizeof(Tp); }
       
-      void 
-      construct(pointer p, const Tp& val) 
-      { ::new((void *)p) Tp(val); }
-
 #ifdef __GXX_EXPERIMENTAL_CXX0X__
-      template<typename... Args>
+      template<typename U, typename... Args>
         void
-        construct(pointer p, Args&&... args) 
-       { ::new((void *)p) Tp(std::forward<Args>(args)...); }
-#endif
+        construct(U* p, Args&&... args) 
+       { ::new((void *)p) U(std::forward<Args>(args)...); }
 
-      void 
-      destroy(pointer p) { p->~Tp(); }
+      template<typename U>
+       void 
+       destroy(U* p) { p->~U(); }
 
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
       // Not copy assignable...
       uneq_allocator&
       operator=(const uneq_allocator&) = delete;
-#endif
+#else
+      void 
+      construct(pointer p, const Tp& val) 
+      { ::new((void *)p) Tp(val); }
 
-    private:
+      void 
+      destroy(pointer p) { p->~Tp(); }
 
-#ifndef __GXX_EXPERIMENTAL_CXX0X__
+    private:
       // Not assignable...
       uneq_allocator&
       operator=(const uneq_allocator&);
 #endif
 
+    private:
+
       // ... yet swappable!
       friend inline void
       swap(uneq_allocator& a, uneq_allocator& b)