From 67c234417412b2d27e30ec30d6883ab9c8d60fc6 Mon Sep 17 00:00:00 2001 From: Eric Fiselier Date: Mon, 29 Aug 2016 01:39:54 +0000 Subject: [PATCH] Revert r279953 - Fix pair::operator=(TupleLike&&) The test emits warnings causing the test-suite to fail. Since I want this patch merged into 3.9 I'll recommit it with a clean test. llvm-svn: 279954 --- libcxx/include/utility | 2 +- .../utility/pairs/pairs.pair/assign_tuple.pass.cpp | 135 --------------------- 2 files changed, 1 insertion(+), 136 deletions(-) delete mode 100644 libcxx/test/std/utilities/utility/pairs/pairs.pair/assign_tuple.pass.cpp diff --git a/libcxx/include/utility b/libcxx/include/utility index 095748d..fbb06f3 100644 --- a/libcxx/include/utility +++ b/libcxx/include/utility @@ -515,7 +515,7 @@ struct _LIBCPP_TYPE_VIS_ONLY pair } template ::template __enable_assign<_Tuple>() + _CheckTLC<_Tuple>::template __enable_assign() > = false> _LIBCPP_INLINE_VISIBILITY pair& operator=(_Tuple&& __p) { diff --git a/libcxx/test/std/utilities/utility/pairs/pairs.pair/assign_tuple.pass.cpp b/libcxx/test/std/utilities/utility/pairs/pairs.pair/assign_tuple.pass.cpp deleted file mode 100644 index 43ffe41..0000000 --- a/libcxx/test/std/utilities/utility/pairs/pairs.pair/assign_tuple.pass.cpp +++ /dev/null @@ -1,135 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03 - -// - -// template struct pair - -// template pair& operator=(tuple&& p); - -#include -#include -#include -#include -#include - -struct CountingType { - static int constructed; - static int copy_constructed; - static int move_constructed; - static int assigned; - static int copy_assigned; - static int move_assigned; - static void reset() { - constructed = copy_constructed = move_constructed = 0; - assigned = copy_assigned = move_assigned = 0; - } - CountingType() : value(0) { ++constructed; } - CountingType(int v) : value(v) { ++constructed; } - CountingType(CountingType const& o) : value(o.value) { ++constructed; ++copy_constructed; } - CountingType(CountingType&& o) : value(o.value) { ++constructed; ++move_constructed; o.value = -1;} - - CountingType& operator=(CountingType const& o) { - ++assigned; - ++copy_assigned; - value = o.value; - return *this; - } - CountingType& operator=(CountingType&& o) { - ++assigned; - ++move_assigned; - value = o.value; - o.value = -1; - return *this; - } - int value; -}; -int CountingType::constructed; -int CountingType::copy_constructed; -int CountingType::move_constructed; -int CountingType::assigned; -int CountingType::copy_assigned; -int CountingType::move_assigned; - -int main() -{ - using C = CountingType; - { - using P = std::pair; - using T = std::tuple; - T t(42, C{42}); - P p(101, C{101}); - C::reset(); - p = t; - assert(C::constructed == 0); - assert(C::assigned == 1); - assert(C::copy_assigned == 1); - assert(C::move_assigned == 0); - assert(p.first == 42); - assert(p.second.value == 42); - } - { - using P = std::pair; - using T = std::tuple; - T t(42, -42); - P p(101, 101); - C::reset(); - p = std::move(t); - assert(C::constructed == 0); - assert(C::assigned == 1); - assert(C::copy_assigned == 0); - assert(C::move_assigned == 1); - assert(p.first == 42); - assert(p.second.value == -42); - } - { - using P = std::pair; - using T = std::array; - T t = {42, -42}; - P p{101, 101}; - C::reset(); - p = t; - assert(C::constructed == 0); - assert(C::assigned == 2); - assert(C::copy_assigned == 2); - assert(C::move_assigned == 0); - assert(p.first.value == 42); - assert(p.second.value == -42); - } - { - using P = std::pair; - using T = std::array; - T t = {42, -42}; - P p{101, 101}; - C::reset(); - p = t; - assert(C::constructed == 0); - assert(C::assigned == 2); - assert(C::copy_assigned == 2); - assert(C::move_assigned == 0); - assert(p.first.value == 42); - assert(p.second.value == -42); - } - { - using P = std::pair; - using T = std::array; - T t = {42, -42}; - P p{101, 101}; - C::reset(); - p = std::move(t); - assert(C::constructed == 0); - assert(C::assigned == 2); - assert(C::copy_assigned == 0); - assert(C::move_assigned == 2); - assert(p.first.value == 42); - assert(p.second.value == -42); - } -} -- 2.7.4