On 05/02/19 14:45 +0000, Jonathan Wakely wrote:
This fixes two PRs, one trivial (don't use C++17 features in C++11
mode) and one more serious (don't require MoveInsertable when we
should only need CopyInsertable).

It would be nice to rely on if-constexpr in C++11 mode, but it causes
clang warnings, complicates testcase bisection/reduction, and causes
users to file bogus bug reports. So let's just avoid it.

Oh, and the test change can be reverted now that types with deleted
moves work again.

Tested x86_64-linux, committed to trunk.


commit 3cd6139661801ab6bd88558e336a8ba12d1ed640
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Tue Feb 5 14:50:58 2019 +0000

    Restore previous behaviour of test
    
    Go back to using CopyConsOnlyType as before r265485, because it works
    again now. Add test using DelAnyAssign for completeness and additional
    coverage.
    
            * testsuite/23_containers/vector/modifiers/push_back/49836.cc: Restore
            use of CopyConsOnlyType, but also test DelAnyAssign for completeness.

diff --git a/libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/49836.cc b/libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/49836.cc
index 1a7d8729718..3e59781e7cc 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/49836.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/49836.cc
@@ -24,11 +24,12 @@
 // libstdc++/49836
 void test01()
 {
-  using __gnu_test::assign::DelAnyAssign;
+  using __gnu_test::CopyConsOnlyType;
   using __gnu_test::MoveConsOnlyType;
+  using __gnu_test::assign::DelAnyAssign;
 
-  std::vector<DelAnyAssign> v1;
-  DelAnyAssign t1;
+  std::vector<CopyConsOnlyType> v1;
+  CopyConsOnlyType t1(1);
   v1.push_back(t1);
   v1.push_back(t1);
   v1.push_back(t1);
@@ -40,6 +41,14 @@ void test01()
   v2.push_back(std::move(t2));
   v2.push_back(std::move(t2));
   VERIFY( v2.size() == 3 );
+
+  std::vector<DelAnyAssign> v3;
+  DelAnyAssign t3;
+  v3.push_back(t3);
+  v3.push_back(t3);
+  v3.push_back(t3);
+  VERIFY( v3.size() == 3 );
+
 }
 
 int main()

Reply via email to