Implement LWG#2353: std::next is over-constrained

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@252407 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Marshall Clow
2015-11-07 17:48:49 +00:00
parent 6455d85714
commit e9ef988b08
3 changed files with 10 additions and 6 deletions

View File

@@ -12,6 +12,8 @@
// template <InputIterator Iter>
// Iter next(Iter x, Iter::difference_type n = 1);
// LWG #2353 relaxed the requirement on next from ForwardIterator to InputIterator
#include <iterator>
#include <cassert>
@@ -34,11 +36,13 @@ test(It i, It x)
int main()
{
const char* s = "1234567890";
test(input_iterator<const char*>(s), 10, input_iterator<const char*>(s+10));
test(forward_iterator<const char*>(s), 10, forward_iterator<const char*>(s+10));
test(bidirectional_iterator<const char*>(s), 10, bidirectional_iterator<const char*>(s+10));
test(random_access_iterator<const char*>(s), 10, random_access_iterator<const char*>(s+10));
test(s, 10, s+10);
test(input_iterator<const char*>(s), input_iterator<const char*>(s+1));
test(forward_iterator<const char*>(s), forward_iterator<const char*>(s+1));
test(bidirectional_iterator<const char*>(s), bidirectional_iterator<const char*>(s+1));
test(random_access_iterator<const char*>(s), random_access_iterator<const char*>(s+1));