From 2a10c960fa33b7048b48107823f5879cf301dece Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Wed, 17 Aug 2016 05:58:40 +0000 Subject: Support allocators with explicit conversion constructors. Fixes bug #29000 llvm-svn: 278904 --- libcxx/test/support/min_allocator.h | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'libcxx/test/support') diff --git a/libcxx/test/support/min_allocator.h b/libcxx/test/support/min_allocator.h index 701159e0481..8e0afab4763 100644 --- a/libcxx/test/support/min_allocator.h +++ b/libcxx/test/support/min_allocator.h @@ -340,6 +340,31 @@ public: friend bool operator!=(min_allocator x, min_allocator y) {return !(x == y);} }; +template +class explicit_allocator +{ +public: + typedef T value_type; + + explicit_allocator() TEST_NOEXCEPT {} + + template + explicit explicit_allocator(explicit_allocator) TEST_NOEXCEPT {} + + T* allocate(std::size_t n) + { + return static_cast(::operator new(n*sizeof(T))); + } + + void deallocate(T* p, std::size_t) + { + return ::operator delete(static_cast(p)); + } + + friend bool operator==(explicit_allocator, explicit_allocator) {return true;} + friend bool operator!=(explicit_allocator x, explicit_allocator y) {return !(x == y);} +}; + #endif // TEST_STD_VER >= 11 #endif // MIN_ALLOCATOR_H -- cgit v1.2.3