Author: ericwf Date: Sun Aug 7 21:22:41 2016 New Revision: 277970 URL: http://llvm.org/viewvc/llvm-project?rev=277970&view=rev Log: Fix copy/move constructor annotation for the uses-allocator test types.
Previously the copy/move constructors of the test types did not properly set the arg_id to T const& or T&& respectivly. Modified: libcxx/trunk/test/support/uses_alloc_types.hpp Modified: libcxx/trunk/test/support/uses_alloc_types.hpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/support/uses_alloc_types.hpp?rev=277970&r1=277969&r2=277970&view=diff ============================================================================== --- libcxx/trunk/test/support/uses_alloc_types.hpp (original) +++ libcxx/trunk/test/support/uses_alloc_types.hpp Sun Aug 7 21:22:41 2016 @@ -119,7 +119,7 @@ using detail::EnableIfB; struct AllocLastTag {}; -template <class Alloc> +template <class Self, class Alloc> struct UsesAllocatorTestBase { public: using CtorAlloc = typename std::conditional< @@ -153,6 +153,16 @@ protected: : args_id(aid), constructor_called(UA_None), allocator() {} + UsesAllocatorTestBase(UsesAllocatorTestBase const&) + : args_id(&makeArgumentID<Self const&>()), constructor_called(UA_None), + allocator() + {} + + UsesAllocatorTestBase(UsesAllocatorTestBase&&) + : args_id(&makeArgumentID<Self&&>()), constructor_called(UA_None), + allocator() + {} + template <class ...Args> UsesAllocatorTestBase(std::allocator_arg_t, CtorAlloc const& a, Args&&...) : args_id(&makeArgumentID<Args&&...>()), @@ -188,12 +198,12 @@ private: }; template <class Alloc, size_t Arity> -class UsesAllocatorV1 : public UsesAllocatorTestBase<Alloc> +class UsesAllocatorV1 : public UsesAllocatorTestBase<UsesAllocatorV1<Alloc, Arity>, Alloc> { public: typedef Alloc allocator_type; - using Base = UsesAllocatorTestBase<Alloc>; + using Base = UsesAllocatorTestBase<UsesAllocatorV1, Alloc>; using CtorAlloc = typename Base::CtorAlloc; UsesAllocatorV1() : Base(&makeArgumentID<>()) {} @@ -218,12 +228,12 @@ public: template <class Alloc, size_t Arity> -class UsesAllocatorV2 : public UsesAllocatorTestBase<Alloc> +class UsesAllocatorV2 : public UsesAllocatorTestBase<UsesAllocatorV2<Alloc, Arity>, Alloc> { public: typedef Alloc allocator_type; - using Base = UsesAllocatorTestBase<Alloc>; + using Base = UsesAllocatorTestBase<UsesAllocatorV2, Alloc>; using CtorAlloc = typename Base::CtorAlloc; UsesAllocatorV2() : Base(&makeArgumentID<>()) {} @@ -240,12 +250,12 @@ public: }; template <class Alloc, size_t Arity> -class UsesAllocatorV3 : public UsesAllocatorTestBase<Alloc> +class UsesAllocatorV3 : public UsesAllocatorTestBase<UsesAllocatorV3<Alloc, Arity>, Alloc> { public: typedef Alloc allocator_type; - using Base = UsesAllocatorTestBase<Alloc>; + using Base = UsesAllocatorTestBase<UsesAllocatorV3, Alloc>; using CtorAlloc = typename Base::CtorAlloc; UsesAllocatorV3() : Base(&makeArgumentID<>()) {} @@ -268,12 +278,12 @@ public: }; template <class Alloc, size_t Arity> -class NotUsesAllocator : public UsesAllocatorTestBase<Alloc> +class NotUsesAllocator : public UsesAllocatorTestBase<NotUsesAllocator<Alloc, Arity>, Alloc> { public: // no allocator_type typedef provided - using Base = UsesAllocatorTestBase<Alloc>; + using Base = UsesAllocatorTestBase<NotUsesAllocator, Alloc>; using CtorAlloc = typename Base::CtorAlloc; NotUsesAllocator() : Base(&makeArgumentID<>()) {} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits