diff options
author | redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-06-04 17:17:57 +0000 |
---|---|---|
committer | redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-06-04 17:17:57 +0000 |
commit | 0fddc25daead4091d08b4615161aa84468aa9405 (patch) | |
tree | bb8b0872d78c3495ce30cb8aa9b5154b4a89d600 /libstdc++-v3/testsuite | |
parent | 29413d70badb1daeb5fab4dc483ca1cad9de796e (diff) | |
download | gcc-0fddc25daead4091d08b4615161aa84468aa9405.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@174647 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/testsuite')
-rw-r--r-- | libstdc++-v3/testsuite/util/testsuite_allocator.h | 57 |
1 files changed, 33 insertions, 24 deletions
diff --git a/libstdc++-v3/testsuite/util/testsuite_allocator.h b/libstdc++-v3/testsuite/util/testsuite_allocator.h index 73622f1a7a1..e472835c84e 100644 --- a/libstdc++-v3/testsuite/util/testsuite_allocator.h +++ b/libstdc++-v3/testsuite/util/testsuite_allocator.h @@ -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) |