summaryrefslogtreecommitdiffstats
path: root/libcxx/test/std/algorithms/alg.nonmodifying/mismatch/mismatch.pass.cpp
diff options
context:
space:
mode:
authorMarshall Clow <mclow.lists@gmail.com>2018-01-16 02:04:10 +0000
committerMarshall Clow <mclow.lists@gmail.com>2018-01-16 02:04:10 +0000
commit6538e28d5dbc11f58392eb75144d4a2d31e66477 (patch)
tree21101d78ad2e33c1e05ad7778e96328cfff01e6e /libcxx/test/std/algorithms/alg.nonmodifying/mismatch/mismatch.pass.cpp
parente5dad1365ce385ee5108800d19466a131c769936 (diff)
downloadbcm5719-llvm-6538e28d5dbc11f58392eb75144d4a2d31e66477.tar.gz
bcm5719-llvm-6538e28d5dbc11f58392eb75144d4a2d31e66477.zip
More constexpr (re P0202) - equal and mismatch
llvm-svn: 322527
Diffstat (limited to 'libcxx/test/std/algorithms/alg.nonmodifying/mismatch/mismatch.pass.cpp')
-rw-r--r--libcxx/test/std/algorithms/alg.nonmodifying/mismatch/mismatch.pass.cpp40
1 files changed, 39 insertions, 1 deletions
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/mismatch/mismatch.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/mismatch/mismatch.pass.cpp
index d4bc3fd70a8..f298bae9690 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/mismatch/mismatch.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/mismatch/mismatch.pass.cpp
@@ -11,8 +11,12 @@
// template<InputIterator Iter1, InputIterator Iter2>
// requires HasEqualTo<Iter1::value_type, Iter2::value_type>
-// pair<Iter1, Iter2>
+// constexpr pair<Iter1, Iter2> // constexpr after c++17
// mismatch(Iter1 first1, Iter1 last1, Iter2 first2);
+//
+// template<InputIterator Iter1, InputIterator Iter2Pred>
+// constexpr pair<Iter1, Iter2> // constexpr after c++17
+// mismatch(Iter1 first1, Iter1 last1, Iter2 first2, Iter2 last2); // C++14
#include <algorithm>
#include <cassert>
@@ -20,6 +24,40 @@
#include "test_macros.h"
#include "test_iterators.h"
+#if TEST_STD_VER > 17
+TEST_CONSTEXPR bool test_constexpr() {
+ int ia[] = {1, 3, 6, 7};
+ int ib[] = {1, 3};
+ int ic[] = {1, 3, 5, 7};
+ typedef input_iterator<int*> II;
+ typedef bidirectional_iterator<int*> BI;
+
+ auto p1 = std::mismatch(std::begin(ia), std::end(ia), std::begin(ic));
+ if (p1.first != ia+2 || p1.second != ic+2)
+ return false;
+
+ auto p2 = std::mismatch(std::begin(ia), std::end(ia), std::begin(ic), std::end(ic));
+ if (p2.first != ia+2 || p2.second != ic+2)
+ return false;
+
+ auto p3 = std::mismatch(std::begin(ib), std::end(ib), std::begin(ic));
+ if (p3.first != ib+2 || p3.second != ic+2)
+ return false;
+
+ auto p4 = std::mismatch(std::begin(ib), std::end(ib), std::begin(ic), std::end(ic));
+ if (p4.first != ib+2 || p4.second != ic+2)
+ return false;
+
+ auto p5 = std::mismatch(II(std::begin(ib)), II(std::end(ib)), II(std::begin(ic)));
+ if (p5.first != II(ib+2) || p5.second != II(ic+2))
+ return false;
+ auto p6 = std::mismatch(BI(std::begin(ib)), BI(std::end(ib)), BI(std::begin(ic)), BI(std::end(ic)));
+ if (p6.first != BI(ib+2) || p6.second != BI(ic+2))
+ return false;
+
+ return true;
+ }
+#endif
int main()
{
OpenPOWER on IntegriCloud