testsuite_allocator.h (tracker_allocator::construct): Update to C++0x definition using type to construct as template parameter.

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
This commit is contained in:
Jonathan Wakely 2011-06-04 17:17:57 +00:00 committed by Jonathan Wakely
parent 26740835ec
commit 6c6424b3d7
2 changed files with 42 additions and 25 deletions

View 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&&)):

View 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); }
#ifdef __GXX_EXPERIMENTAL_CXX0X__
template<typename U, typename... Args>
void
construct(U* p, Args&&... args)
{ ::new((void *)p) U(std::forward<Args>(args)...); }
template<typename U>
void
destroy(U* p) { p->~U(); }
// Not copy assignable...
uneq_allocator&
operator=(const uneq_allocator&) = delete;
#else
void
construct(pointer p, const Tp& val)
{ ::new((void *)p) Tp(val); }
#ifdef __GXX_EXPERIMENTAL_CXX0X__
template<typename... Args>
void
construct(pointer p, Args&&... args)
{ ::new((void *)p) Tp(std::forward<Args>(args)...); }
#endif
void
destroy(pointer p) { p->~Tp(); }
#ifdef __GXX_EXPERIMENTAL_CXX0X__
// Not copy assignable...
uneq_allocator&
operator=(const uneq_allocator&) = delete;
#endif
private:
#ifndef __GXX_EXPERIMENTAL_CXX0X__
// Not assignable...
uneq_allocator&
operator=(const uneq_allocator&);
#endif
private:
// ... yet swappable!
friend inline void
swap(uneq_allocator& a, uneq_allocator& b)