diff options
3 files changed, 14 insertions, 14 deletions
diff --git a/libcxx/include/experimental/memory_resource b/libcxx/include/experimental/memory_resource index f54ef0b2f24..9b345210ee5 100644 --- a/libcxx/include/experimental/memory_resource +++ b/libcxx/include/experimental/memory_resource @@ -176,7 +176,7 @@ public: {} polymorphic_allocator & - operator=(polymorphic_allocator const &) = default; + operator=(polymorphic_allocator const &) = delete; // 8.6.3, memory.polymorphic.allocator.mem _LIBCPP_INLINE_VISIBILITY 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; |