1bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===//
2bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//
3f5256e16dfc425c1d466f6308d4026d529ce9e0bHoward Hinnant//                     The LLVM Compiler Infrastructure
4bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard 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.
7bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//
8bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===//
9bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
10bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// <forward_list>
11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
12bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// void resize(size_type n);
13bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
14bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <forward_list>
15bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <cassert>
16bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
17e27dbcf2dce3505a2c6f2d385216ea4e76655df3Marshall Clow#include "DefaultOnly.h"
18061d0cc4db18d17bf01ed14c5db0be098205bd47Marshall Clow#include "min_allocator.h"
19bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
20bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantint main()
21bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{
22bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
23bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef DefaultOnly T;
24bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef std::forward_list<T> C;
25bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        C c;
26bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        c.resize(0);
27bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(distance(c.begin(), c.end()) == 0);
28bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        c.resize(10);
29bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(distance(c.begin(), c.end()) == 10);
30bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        c.resize(20);
31bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(distance(c.begin(), c.end()) == 20);
32bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        c.resize(5);
33bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(distance(c.begin(), c.end()) == 5);
34bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        c.resize(0);
35bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(distance(c.begin(), c.end()) == 0);
36bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
37bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
38bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef int T;
39bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        typedef std::forward_list<T> C;
40bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        const T t[] = {0, 1, 2, 3, 4};
41bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        C c(std::begin(t), std::end(t));
42bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
43bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        c.resize(3);
44bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(distance(c.begin(), c.end()) == 3);
45bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c.begin(), 0) == 0);
46bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c.begin(), 1) == 1);
47bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c.begin(), 2) == 2);
48bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
49bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        c.resize(6);
50bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(distance(c.begin(), c.end()) == 6);
51bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c.begin(), 0) == 0);
52bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c.begin(), 1) == 1);
53bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c.begin(), 2) == 2);
54bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c.begin(), 3) == 0);
55bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c.begin(), 4) == 0);
56bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c.begin(), 5) == 0);
57bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
58bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        c.resize(6);
59bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(distance(c.begin(), c.end()) == 6);
60bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c.begin(), 0) == 0);
61bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c.begin(), 1) == 1);
62bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c.begin(), 2) == 2);
63bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c.begin(), 3) == 0);
64bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c.begin(), 4) == 0);
65bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(*next(c.begin(), 5) == 0);
66bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
6781381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant#if __cplusplus >= 201103L
6881381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant    {
6981381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        typedef DefaultOnly T;
7081381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        typedef std::forward_list<T, min_allocator<T>> C;
7181381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        C c;
7281381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        c.resize(0);
7381381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(distance(c.begin(), c.end()) == 0);
7481381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        c.resize(10);
7581381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(distance(c.begin(), c.end()) == 10);
7681381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        c.resize(20);
7781381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(distance(c.begin(), c.end()) == 20);
7881381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        c.resize(5);
7981381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(distance(c.begin(), c.end()) == 5);
8081381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        c.resize(0);
8181381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(distance(c.begin(), c.end()) == 0);
8281381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant    }
8381381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant    {
8481381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        typedef int T;
8581381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        typedef std::forward_list<T, min_allocator<T>> C;
8681381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        const T t[] = {0, 1, 2, 3, 4};
8781381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        C c(std::begin(t), std::end(t));
8881381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant
8981381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        c.resize(3);
9081381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(distance(c.begin(), c.end()) == 3);
9181381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c.begin(), 0) == 0);
9281381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c.begin(), 1) == 1);
9381381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c.begin(), 2) == 2);
9481381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant
9581381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        c.resize(6);
9681381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(distance(c.begin(), c.end()) == 6);
9781381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c.begin(), 0) == 0);
9881381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c.begin(), 1) == 1);
9981381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c.begin(), 2) == 2);
10081381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c.begin(), 3) == 0);
10181381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c.begin(), 4) == 0);
10281381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c.begin(), 5) == 0);
10381381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant
10481381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        c.resize(6);
10581381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(distance(c.begin(), c.end()) == 6);
10681381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c.begin(), 0) == 0);
10781381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c.begin(), 1) == 1);
10881381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c.begin(), 2) == 2);
10981381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c.begin(), 3) == 0);
11081381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c.begin(), 4) == 0);
11181381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant        assert(*next(c.begin(), 5) == 0);
11281381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant    }
11381381a932fbebb384adfe5c0116d45b37479efdeHoward Hinnant#endif
114bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant}
115