diff options
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.cpp | 21 |
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 } |
