summaryrefslogtreecommitdiff
path: root/test/std/iterators/iterator.primitives/iterator.operations/distance.pass.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/std/iterators/iterator.primitives/iterator.operations/distance.pass.cpp')
-rw-r--r--test/std/iterators/iterator.primitives/iterator.operations/distance.pass.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/test/std/iterators/iterator.primitives/iterator.operations/distance.pass.cpp b/test/std/iterators/iterator.primitives/iterator.operations/distance.pass.cpp
index 7fef635838c3..2f16fcb38236 100644
--- a/test/std/iterators/iterator.primitives/iterator.operations/distance.pass.cpp
+++ b/test/std/iterators/iterator.primitives/iterator.operations/distance.pass.cpp
@@ -29,12 +29,33 @@ test(It first, It last, typename std::iterator_traits<It>::difference_type x)
assert(std::distance(first, last) == x);
}
+#if TEST_STD_VER > 14
+template <class It>
+constexpr bool
+constexpr_test(It first, It last, typename std::iterator_traits<It>::difference_type x)
+{
+ return std::distance(first, last) == x;
+}
+#endif
+
int main()
{
+ {
const char* s = "1234567890";
test(input_iterator<const char*>(s), input_iterator<const char*>(s+10), 10);
test(forward_iterator<const char*>(s), forward_iterator<const char*>(s+10), 10);
test(bidirectional_iterator<const char*>(s), bidirectional_iterator<const char*>(s+10), 10);
test(random_access_iterator<const char*>(s), random_access_iterator<const char*>(s+10), 10);
test(s, s+10, 10);
+ }
+#if TEST_STD_VER > 14
+ {
+ constexpr const char* s = "1234567890";
+ static_assert( constexpr_test(input_iterator<const char*>(s), input_iterator<const char*>(s+10), 10), "");
+ static_assert( constexpr_test(forward_iterator<const char*>(s), forward_iterator<const char*>(s+10), 10), "");
+ static_assert( constexpr_test(bidirectional_iterator<const char*>(s), bidirectional_iterator<const char*>(s+10), 10), "");
+ static_assert( constexpr_test(random_access_iterator<const char*>(s), random_access_iterator<const char*>(s+10), 10), "");
+ static_assert( constexpr_test(s, s+10, 10), "");
+ }
+#endif
}