1ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant//===----------------------------------------------------------------------===//
2ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant//
3ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant//                     The LLVM Compiler Infrastructure
4ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant//
5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open
6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details.
7ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant//
8ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant//===----------------------------------------------------------------------===//
9ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant
10ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant// <numeric>
11ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant
12ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant// template <class ForwardIterator, class T>
13ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant//     void iota(ForwardIterator first, ForwardIterator last, T value);
14ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant
15ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant#include <numeric>
16ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant#include <cassert>
17ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant
1883e2c4d877fe2d7793868b1c6a5d9525a7c4d431Marshall Clow#include "test_iterators.h"
19ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant
20ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnanttemplate <class InIter>
21ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnantvoid
22ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnanttest()
23ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant{
24ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant    int ia[] = {1, 2, 3, 4, 5};
25ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant    int ir[] = {5, 6, 7, 8, 9};
26ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant    const unsigned s = sizeof(ia) / sizeof(ia[0]);
27ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant    std::iota(InIter(ia), InIter(ia+s), 5);
28ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant    for (unsigned i = 0; i < s; ++i)
29ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant        assert(ia[i] == ir[i]);
30ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant}
31ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant
32ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnantint main()
33ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant{
34ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant    test<forward_iterator<int*> >();
35ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant    test<bidirectional_iterator<int*> >();
36ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant    test<random_access_iterator<int*> >();
37ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant    test<int*>();
38ebef7459b2128e379999c3cd7f353376b5ed64bbHoward Hinnant}
39