]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libstdc++: Improve tests for constexpr algorithms
authorJonathan Wakely <jwakely@redhat.com>
Thu, 29 Oct 2020 14:47:18 +0000 (14:47 +0000)
committerJonathan Wakely <jwakely@redhat.com>
Thu, 29 Oct 2020 14:47:18 +0000 (14:47 +0000)
These tests just return true without checking that the results of the
algorithms. Although it should be safe to assume that the algorithms
behave the same at compile-time as at run-time, we can use these tests
to verify it.

This replaces each 'return true' statement with a condition that depends
on the basic functionality of the algorithm, such as returning an
iterator to the right position.

libstdc++-v3/ChangeLog:

* testsuite/25_algorithms/all_of/constexpr.cc: Check result of
the algorithm.
* testsuite/25_algorithms/any_of/constexpr.cc: Likewise.
* testsuite/25_algorithms/binary_search/constexpr.cc: Likewise.
* testsuite/25_algorithms/copy_backward/constexpr.cc: Likewise.
* testsuite/25_algorithms/count/constexpr.cc: Likewise.
* testsuite/25_algorithms/equal/constexpr.cc: Likewise.
* testsuite/25_algorithms/equal_range/constexpr.cc: Likewise.
* testsuite/25_algorithms/fill/constexpr.cc: Likewise.
* testsuite/25_algorithms/find_end/constexpr.cc: Likewise.
* testsuite/25_algorithms/find_if/constexpr.cc: Likewise.
* testsuite/25_algorithms/is_partitioned/constexpr.cc: Likewise.
* testsuite/25_algorithms/is_permutation/constexpr.cc: Likewise.
* testsuite/25_algorithms/is_sorted_until/constexpr.cc:
Likewise.
* testsuite/25_algorithms/lexicographical_compare/constexpr.cc:
Likewise.
* testsuite/25_algorithms/lower_bound/constexpr.cc: Likewise.
* testsuite/25_algorithms/merge/constexpr.cc: Likewise.
* testsuite/25_algorithms/mismatch/constexpr.cc: Likewise.
* testsuite/25_algorithms/none_of/constexpr.cc: Likewise.
* testsuite/25_algorithms/partition_copy/constexpr.cc: Likewise.
* testsuite/25_algorithms/remove_copy/constexpr.cc: Likewise.
* testsuite/25_algorithms/remove_copy_if/constexpr.cc: Likewise.
* testsuite/25_algorithms/remove_if/constexpr.cc: Likewise.
* testsuite/25_algorithms/replace_if/constexpr.cc: Likewise.
* testsuite/25_algorithms/reverse/constexpr.cc: Likewise.
* testsuite/25_algorithms/reverse_copy/constexpr.cc: Likewise.
* testsuite/25_algorithms/rotate_copy/constexpr.cc: Likewise.
* testsuite/25_algorithms/search/constexpr.cc: Likewise.
* testsuite/25_algorithms/set_difference/constexpr.cc: Likewise.
* testsuite/25_algorithms/set_intersection/constexpr.cc:
Likewise.
* testsuite/25_algorithms/set_symmetric_difference/constexpr.cc:
Likewise.
* testsuite/25_algorithms/set_union/constexpr.cc: Likewise.
* testsuite/25_algorithms/unique_copy/constexpr.cc: Likewise.
* testsuite/25_algorithms/upper_bound/constexpr.cc: Likewise.

33 files changed:
libstdc++-v3/testsuite/25_algorithms/all_of/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/any_of/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/binary_search/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/copy_backward/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/count/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/equal/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/equal_range/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/fill/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/find_end/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/find_if/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/is_partitioned/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/is_permutation/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/is_sorted_until/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/lower_bound/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/merge/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/mismatch/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/none_of/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/partition_copy/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/remove_copy/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/remove_copy_if/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/remove_if/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/replace_if/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/reverse/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/reverse_copy/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/rotate_copy/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/search/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/set_difference/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/set_intersection/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/set_union/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/unique_copy/constexpr.cc
libstdc++-v3/testsuite/25_algorithms/upper_bound/constexpr.cc

index 11f1a337c20292283eb67ed3a3fcd36985bd6832..757eebc89b6379d86e5b6ad2a7bfd1bfee8112ad 100644 (file)
 
 constexpr std::array<int, 6> cae{{0, 2, 4, 6, 8, 10}};
 
-constexpr auto out2 = std::all_of(cae.begin(), cae.end(),
+constexpr auto out1 = std::all_of(cae.begin(), cae.end(),
                                  [](int i){ return i % 2 == 0; });
 
-constexpr bool
-test()
-{
-  return true;
-}
+static_assert(out1);
+
+constexpr auto out2 = std::all_of(cae.begin(), cae.end(),
+                                 [](int i){ return i != 8; });
 
-static_assert(test());
+static_assert(!out2);
index 370f7f3614a79cd909e64bc9092c94ea6090a93d..dadd45061791964ccb642b5e80f7a575b899a67e 100644 (file)
@@ -29,7 +29,10 @@ test()
   const auto out3 = std::any_of(ca0.begin(), ca0.end(),
                                [](int i){ return i % 2 == 0; });
 
-  return true;
+  const auto out4 = std::any_of(ca0.begin(), ca0.end(),
+                               [](int i){ return i == -1; });
+
+  return out3 && !out4;
 }
 
 static_assert(test());
index 0e355cc9ba7cc8188a39527a32a6f3f0c709da58..f82a6893b48fb8895ff9e1379005ccbaef793cb2 100644 (file)
@@ -31,7 +31,10 @@ test()
   const auto out5 = std::binary_search(ca0.begin(), ca0.end(), 5,
                                       std::less<int>());
 
-  return true;
+  const auto out6 = std::binary_search(ca0.begin(), ca0.end(), 4.5,
+                                      std::less<>());
+
+  return out4 && out5 && !out6;
 }
 
 static_assert(test());
index 704dcf513c042b1dd62a92bc5fdcea4cad7b9322..e97e30e077711ea461e2913dd2dcf48906b8ecc8 100644 (file)
@@ -30,7 +30,7 @@ test()
   const auto out7 = std::copy_backward(ca0.begin(), ca0.begin() + 8,
                                       ma0.begin() + 10);
 
-  return true;
+  return out7 == ma0.begin() + 2 && ma0[3] == 1;
 }
 
 static_assert(test());
index 6b6a2801207b24ad7b5605a895d9980071a2b988..3b900a9ca07c0ee8b3c583dab9b7df20f0358a47 100644 (file)
@@ -28,7 +28,9 @@ test()
 
   const auto out8 = std::count(ca0.begin(), ca0.end(), 6);
 
-  return true;
+  const auto out9 = std::count(ca0.begin(), ca0.end(), 16);
+
+  return out8 == 1 && out9 == 0;
 }
 
 static_assert(test());
index a3ebee5db9088b576d9a199f6266f0f7c93ec93b..ca1b7bc5bd96e8f12718aa4b2b84779ebca0245b 100644 (file)
@@ -33,7 +33,12 @@ test()
   const auto outb = std::equal(ca0.begin(), ca0.end(), cas.begin(),
                               [](int i, int j){ return i + 3 == j; });
 
-  return true;
+  auto ca2 = ca0;
+  ca2[5] = -1;
+
+  const auto outc = std::equal(ca0.begin(), ca0.end(), ca2.begin());
+
+  return outa && outb && !outc;
 }
 
 static_assert(test());
index 0bd1b0de48c90f83fb498331dbaf428a83196865..2b46f5f67595523767ba9e02601452f251461a5b 100644 (file)
@@ -28,7 +28,8 @@ test()
 
   const auto outc = std::equal_range(car.begin(), car.end(), 6);
 
-  return true;
+  return outc.first == (car.begin() + 6)
+    && outc.second == (car.begin() + 8);
 }
 
 static_assert(test());
index ec69a7f432a9c6c4ad0d5e9f413a8af12c114d7d..154e48b384910c1e0f71262924c9407ca52ceab2 100644 (file)
@@ -27,7 +27,7 @@ test()
   std::array<int, 12> ma0{{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
   std::fill(ma0.begin(), ma0.end(), 66);
 
-  return true;
+  return ma0[4] == 66 && ma0[7] == 66;
 }
 
 static_assert(test());
index c5ba3974cfde845d31fe32f613b7989b573ded91..9339ab06ae6080a9ec7436db52d9c45a221ad800 100644 (file)
@@ -24,7 +24,7 @@
 constexpr bool
 test()
 {
-  constexpr std::array<int, 12> ca0{{0, 1, 2, 3, 4, 5,  6, 7, 8,  9, 10, 11}};
+  constexpr std::array<int, 12> ca0{{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}};
   constexpr std::array<int, 3> cam{{4, 5, 6}};
   constexpr std::array<int, 3> camm{{-4, -5, -6}};
 
@@ -35,7 +35,7 @@ test()
                                  camm.begin(), camm.end(),
                                  [](int i, int j){ return i + 1 == -j; });
 
-  return true;
+  return outf == (ca0.begin() + 4) && outg == (ca0.begin() + 3);
 }
 
 static_assert(test());
index b4064e6f6907e38b3b2f40d76e8c63e6dfa6b537..6c88c49c75e48ed677dd3a15a6cf1ab659030d5a 100644 (file)
 constexpr bool
 test()
 {
-  constexpr std::array<int, 12> ca0{{0, 1, 2, 3, 4, 5,  6, 7, 8,  9, 10, 11}};
+  constexpr std::array<int, 12> ca0{{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}};
 
   const auto outj = std::find_if(ca0.begin(), ca0.end(),
                                 [](int i){ return i == 6; });
 
-  return true;
+  return outj == (ca0.begin() + 6);
 }
 
 static_assert(test());
index deab94d019dc74a0ebed6ef05f34b8c8be37767c..163f9bd2d1d99a9af58408c7db6dc63c3e2291f9 100644 (file)
@@ -29,7 +29,7 @@ test()
   const auto outs = std::is_partitioned(caeo.begin(), caeo.end(),
                                        [](int i){ return i % 2 == 0; });
 
-  return true;
+  return outs;
 }
 
 static_assert(test());
index 1da8bbee30e3fde42f7b57d5f78d9bbf713d9bfe..1567c2658ff9172487b92b816ee40a12a8a9985f 100644 (file)
@@ -29,7 +29,9 @@ test()
 
   const auto outt = std::is_permutation(ca0.begin(), ca0.end(), cap.begin());
 
-  return true;
+  const auto outf = std::is_permutation(ca0.begin() + 1, ca0.end(), cap.begin());
+
+  return outt && !outf;
 }
 
 static_assert(test());
index d000e555ae7955898ec867fd27eebc3eed893e35..3c540559c31ab3be6e74db2fda884e59f20388e0 100644 (file)
@@ -31,7 +31,10 @@ test()
   const auto outy = std::is_sorted_until(aus.begin(), aus.end(),
                                         std::less<int>());
 
-  return true;
+  const auto outz = std::is_sorted_until(outx - 1, aus.end(),
+                                        std::greater<int>());
+
+  return outx == aus.begin() + 7 && outy == outx && outz == (outx + 1);
 }
 
 static_assert(test());
index 7046f4489d63d52c5c21681e548836473efcf157..1d7502c27c6c7fb885593d0452c911a16f5c2700 100644 (file)
@@ -34,7 +34,7 @@ test()
                                                   ca1.begin(), ca1.end(),
                                                   std::less<int>());
 
-  return true;
+  return outz && outaa;
 }
 
 static_assert(test());
index 1b570a2ce5468ac04ca11b10098499c3852f1105..ec5da9b32277d0225b1beaebf5a964b3b03bfcb4 100644 (file)
@@ -31,7 +31,7 @@ test()
   const auto outcc = std::lower_bound(ca0.begin(), ca0.end(), 6,
                                      std::less<int>());
 
-  return true;
+  return outbb == (ca0.begin() + 6) && outcc == outbb;
 }
 
 static_assert(test());
index d46b5787b7c47908fcb7c69b25e1d10ca186e166..02493581635f76bf96d2557235dd3654fdf617fe 100644 (file)
@@ -31,12 +31,14 @@ test()
 
   const auto outdd = std::merge(ca0.begin(), ca0.end(),
                                cas.begin(), cas.end(), out0.begin());
+  if (outdd != out0.end())
+    return false;
 
   const auto outee = std::merge(ca0.begin(), ca0.end(),
                                camm.begin(), camm.end(), out0.begin(),
                                [](int i, int j){ return i < j; });
 
-  return true;
+  return outee == (out0.begin() + ca0.size() + camm.size());
 }
 
 static_assert(test());
index 868bb41e1cb75b924167db183436bfd2881c73af..f2cc21d03d8dfa4860c5e2050b366e8b1da87d7b 100644 (file)
@@ -32,7 +32,8 @@ test()
   const auto outgg = std::mismatch(ca0.begin(), ca0.end(), cax.begin(),
                                   std::equal_to<int>());
 
-  return true;
+  return outff.first == (ca0.begin() + 6) && outff.second == (cax.begin() + 6)
+    && outgg == outff;
 }
 
 static_assert(test());
index cea4fc61f9060752bc6a4aa04f84722ca839340a..245ebe47dcb3c4d49ae518484584dbcdbd5480be 100644 (file)
@@ -29,7 +29,7 @@ test()
   const auto outhh = std::none_of(ca0.begin(), ca0.end(),
                                  [](int i){ return i > 12; });
 
-  return true;
+  return outhh;
 }
 
 static_assert(test());
index e7cb3087b2cd521f32b22e890ff18bf7787c4564..21685636ecddc6e4464c05c6ca1295dd3cc3cb3f 100644 (file)
@@ -32,7 +32,8 @@ test()
                                         out0.begin(), out1.begin(),
                                         [](int i){ return i % 2 == 0; });
 
-  return true;
+  return outii.first == (out0.begin() + 6) && out0[1] == 2
+    && outii.second == (out1.begin() + 6) && out1[1] == 3;
 }
 
 static_assert(test());
index 0474feccb097f98d142975106402ec4e778a851f..e82a506abb0d56cef9d61a3fae37b0395f771e95 100644 (file)
 constexpr bool
 test()
 {
-  constexpr std::array<int, 12> ca0{{0, 1, 2, 3, 4, 5,  6, 7, 8,  9, 10, 11}};
+  constexpr std::array<int, 12> ca0{{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}};
   std::array<int, 24> out0{{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};
 
   const auto outmm = std::remove_copy(ca0.begin(), ca0.end(), out0.begin(), 6);
 
-  return true;
+  return outmm == out0.begin() + ca0.size() - 1;
 }
 
 static_assert(test());
index 813be78c1336f6c0faaaf6c986269285bbc9f27f..f8133fc24f5bdbd8420e6391b0998b967f52f8fa 100644 (file)
@@ -30,7 +30,7 @@ test()
   const auto outnn = std::remove_copy_if(ca0.begin(), ca0.end(), out0.begin(),
                                         [](int i){ return i == 7; });
 
-  return true;
+  return outnn == out0.begin() + ca0.size() - 1;
 }
 
 static_assert(test());
index c2d98f2a68ea7cbaa55bc48755999be1f813f290..d590d4d5ea15d31fb00d74e51c3b4f84c5f0b139 100644 (file)
@@ -29,7 +29,7 @@ test()
   const auto outll = std::remove_if(ac2.begin(), ac2.end(),
                                    [](int i){ return i == 7; });
 
-  return true;
+  return outll == (ac2.end() - 1) && ac2[7] == 8;
 }
 
 static_assert(test());
index 6bcc0bd72ae0c87d257d0f8d29fd72227dbcb837..4b293f48aa93ec9efd79ff0e126c6d1f3b575ddb 100644 (file)
@@ -28,7 +28,9 @@ test()
 
   std::replace_if(ar0.begin(), ar0.end(), [](int i){ return i % 2 == 1; }, 42);
 
-  return true;
+  std::array<int, 12> ar1{{0, 42, 2, 42, 4, 42, 6, 6, 8, 42, 42, 42}};
+
+  return ar0 == ar1;
 }
 
 static_assert(test());
index ba1f47b6127a5856761259f427cb54e13551180b..15140014a093e5a8cf9c3ed2ae994f6c8a037fdb 100644 (file)
@@ -23,8 +23,6 @@
 constexpr bool
 test()
 {
-  auto ok = true;
-
   std::array<int, 12> ar0{{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}};
 
   std::reverse(ar0.begin() + 2, ar0.begin() + 9);
index 86214e1d30ea216b3f7fb95a2d0127daf7dffc81..9a85e591edd8435cb41896fe17d9d286146d91f1 100644 (file)
@@ -29,7 +29,7 @@ test()
 
   const auto outqq = std::reverse_copy(ca0.rbegin(), ca0.rend(), out0.begin());
 
-  return true;
+  return outqq == (out0.begin() + ca0.size()) && out0[3] == 3;
 }
 
 static_assert(test());
index f8377b8a24c49f3a9fca23ef6e0e996ff0857506..8d9d966ba0307b9271df5c2b393f1103e7373d42 100644 (file)
@@ -30,7 +30,7 @@ test()
   const auto outrr = std::rotate_copy(ca0.begin(), ca0.begin() + 6,
                                      ca0.end(), out0.begin());
 
-  return true;
+  return outrr == (out0.begin() + ca0.size()) && out0[3] == 9 && out0[8] == 2;
 }
 
 static_assert(test());
index e34194cfc5db474ddfb5578edc16e0c5400d3602..557234ec81971a6666512b582a3322dbb182bb48 100644 (file)
@@ -24,7 +24,7 @@
 constexpr bool
 test()
 {
-  constexpr std::array<int, 12> ca0{{0, 1, 2, 3, 4, 5,  6, 7, 8,  9, 10, 11}};
+  constexpr std::array<int, 12> ca0{{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}};
   constexpr std::array<int, 3> cam{{4, 5, 6}};
 
   const auto outtt = std::search(ca0.begin(), ca0.end(),
@@ -35,7 +35,7 @@ test()
     = std::search(ca0.begin(), ca0.end(),
                  std::default_searcher(cam.begin(), cam.end()));
 
-  return true;
+  return outtt == (ca0.begin() + 4) && outtt2 == outtt;
 }
 
 static_assert(test());
index ef0f7184604fdce879291cc634a0e7d08be07e44..f66c957df80be9d41890c5833369db63800d9fa3 100644 (file)
@@ -29,13 +29,16 @@ test()
   std::array<int, 24> out0{{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};
 
   const auto outvv = std::set_difference(ca0.begin(), ca0.end(),
-                                        cas.begin(), cas.end(), out0.begin());
+                                        cas.begin(), cas.end(),
+                                        out0.begin());
 
   const auto outww = std::set_difference(ca0.begin(), ca0.end(),
                                         cas.begin(), cas.end(),
-                                        out0.begin(), std::less<int>());
+                                        outvv,
+                                        std::less<int>());
 
-  return true;
+
+  return outvv == (out0.begin() + 3) && outww == (outvv + 3);
 }
 
 static_assert(test());
index b415020943a530bc755d4715371a5c0bbaf193b7..720e8a5a6c06dae23cbf99309fca680b463027fd 100644 (file)
@@ -36,7 +36,7 @@ test()
                                           cas.begin(), cas.end(),
                                           out0.begin(), std::less<int>());
 
-  return true;
+  return outxx == (out0.begin() + 9) && outyy == outxx;
 }
 
 static_assert(test());
index ef0f7184604fdce879291cc634a0e7d08be07e44..0505aaf2519858dfd1da6db6379013c6fe0c937a 100644 (file)
@@ -25,17 +25,19 @@ constexpr bool
 test()
 {
   constexpr std::array<int, 12> ca0{{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}};
-  constexpr std::array<int, 12> cas{{3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}};
+  constexpr std::array<int, 12> cas{{4, 4, 5, 6, 7, 8, 9, 10, 11, 11, 12, 13}};
   std::array<int, 24> out0{{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};
 
-  const auto outvv = std::set_difference(ca0.begin(), ca0.end(),
-                                        cas.begin(), cas.end(), out0.begin());
+  const auto outvv = std::set_symmetric_difference(ca0.begin(), ca0.end(),
+                                                  cas.begin(), cas.end(),
+                                                  out0.begin());
 
-  const auto outww = std::set_difference(ca0.begin(), ca0.end(),
-                                        cas.begin(), cas.end(),
-                                        out0.begin(), std::less<int>());
+  const auto outww = std::set_symmetric_difference(ca0.begin(), ca0.end(),
+                                                  cas.begin(), cas.end(),
+                                                  out0.begin(),
+                                                  std::less<int>());
 
-  return true;
+  return outvv == (out0.begin() + 8) && outww == outvv;
 }
 
 static_assert(test());
index fccfe2099d7f29fd73317e839a9158cb441eb00c..87f3f27f9e1093c06e62c369111338593ae4622c 100644 (file)
@@ -29,13 +29,14 @@ test()
   std::array<int, 24> out0{{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};
 
   const auto out11 = std::set_union(ca0.begin(), ca0.end(),
-                                   cas.begin(), cas.end(), out0.begin());
+                                   cas.begin(), cas.end(),
+                                   out0.begin());
 
   const auto out22 = std::set_union(ca0.begin(), ca0.end(),
                                    cas.begin(), cas.end(),
                                    out0.begin(), std::less<int>());
 
-  return true;
+  return out11 == (out0.begin() + 15) && out22 == out11;
 }
 
 static_assert(test());
index 167dc55add6666279ae3f0e87e48be09b180e316..ee372b8488d08752bf825ed1fafbb95069a2c6af 100644 (file)
@@ -29,10 +29,11 @@ test()
 
   const auto out55 = std::unique_copy(ar3.begin(), ar3.end(), out0.begin());
 
-  const auto out66 = std::unique_copy(ar3.begin(), ar3.end(), out0.begin(),
+  const auto out66 = std::unique_copy(ar3.begin(), ar3.end(), out55,
                                      std::equal_to<int>());
 
-  return true;
+  return out55 == (out0.begin() + 10) && out0[7] == 8
+    && out66 == (out55 + 10) ; // && out0[19] == 11;
 }
 
 static_assert(test());
index 8dedb6bd615f12f56308cfdc7402e5513a25e8ae..3479116c210d43899e7c5012bb8427e14ef05f3a 100644 (file)
@@ -31,7 +31,7 @@ test()
   const auto out88 = std::upper_bound(ca0.begin(), ca0.end(), 6,
                                      std::less<int>());
 
-  return true;
+  return out77 == (ca0.begin() + 7) && out88 == out77;
 }
 
 static_assert(test());