diff options
| author | Eric Fiselier <eric@efcs.ca> | 2016-06-27 00:55:25 +0000 |
|---|---|---|
| committer | Eric Fiselier <eric@efcs.ca> | 2016-06-27 00:55:25 +0000 |
| commit | 8b7faa68716d8c65ffad76b2594684a41aeb4c62 (patch) | |
| tree | b95da3b03ed0a67064720ee3e83103a276949f65 /libcxx/test | |
| parent | 9372d8bc613b2ec6fa2dbaa63d84ecc1ffaf70fc (diff) | |
| download | bcm5719-llvm-8b7faa68716d8c65ffad76b2594684a41aeb4c62.tar.gz bcm5719-llvm-8b7faa68716d8c65ffad76b2594684a41aeb4c62.zip | |
Implement p0337r0. Delete operator= for polymorphic_allocator.
llvm-svn: 273838
Diffstat (limited to 'libcxx/test')
| -rw-r--r-- | libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.ctor/assign.pass.cpp | 4 | ||||
| -rw-r--r-- | libcxx/test/support/uses_alloc_types.hpp | 22 |
2 files changed, 13 insertions, 13 deletions
diff --git a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.ctor/assign.pass.cpp b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.ctor/assign.pass.cpp index 77ffb51a330..c4309d9097a 100644 --- a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.ctor/assign.pass.cpp +++ b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.ctor/assign.pass.cpp @@ -24,6 +24,6 @@ namespace ex = std::experimental::pmr; int main() { typedef ex::polymorphic_allocator<void> T; - static_assert(std::is_copy_assignable<T>::value, ""); - static_assert(std::is_move_assignable<T>::value, ""); + static_assert(!std::is_copy_assignable<T>::value, ""); + static_assert(!std::is_move_assignable<T>::value, ""); } diff --git a/libcxx/test/support/uses_alloc_types.hpp b/libcxx/test/support/uses_alloc_types.hpp index f68b842a708..a88453c6c03 100644 --- a/libcxx/test/support/uses_alloc_types.hpp +++ b/libcxx/test/support/uses_alloc_types.hpp @@ -160,26 +160,26 @@ protected: allocator(a) {} - template <class ...Args> + template <class ...Args, class ArgsIDL = detail::TakeNArgs<sizeof...(Args) - 1, Args&&...>> UsesAllocatorTestBase(AllocLastTag, Args&&... args) - : args_id(nullptr), - constructor_called(UA_AllocLast) + : args_id(&makeTypeID<typename ArgsIDL::type>()), + constructor_called(UA_AllocLast), + allocator(getAllocatorFromPack( + typename ArgsIDL::type{}, + std::forward<Args>(args)...)) { - typedef typename detail::TakeNArgs<sizeof...(Args) - 1, Args&&...>::type - ArgIDL; - args_id = &makeTypeID<ArgIDL>(); - getAllocatorFromPack(ArgIDL{}, std::forward<Args>(args)...); } private: template <class ...LArgs, class ...Args> - void getAllocatorFromPack(ArgumentListID<LArgs...>, Args&&... args) { - getAllocatorFromPackImp<LArgs const&...>(args...); + static CtorAlloc const& getAllocatorFromPack(ArgumentListID<LArgs...>, Args&&... args) { + return getAllocatorFromPackImp<LArgs const&...>(args...); } template <class ...LArgs> - void getAllocatorFromPackImp(typename detail::Identity<LArgs>::type..., CtorAlloc const& alloc) { - allocator = alloc; + static CtorAlloc const& getAllocatorFromPackImp( + typename detail::Identity<LArgs>::type..., CtorAlloc const& alloc) { + return alloc; } const TypeID* args_id; |

