[libcxx] r277970 - Fix copy/move constructor annotation for the uses-allocator test types.
Eric Fiselier via cfe-commits
cfe-commits at lists.llvm.org
Sun Aug 7 19:22:41 PDT 2016
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<>()) {}
More information about the cfe-commits
mailing list