1//===----------------------------------------------------------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is dual licensed under the MIT and the University of Illinois Open 6// Source Licenses. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10// <forward_list> 11 12// void resize(size_type n); 13 14#include <forward_list> 15#include <cassert> 16 17#include "DefaultOnly.h" 18#include "min_allocator.h" 19 20int main() 21{ 22 { 23 typedef DefaultOnly T; 24 typedef std::forward_list<T> C; 25 C c; 26 c.resize(0); 27 assert(distance(c.begin(), c.end()) == 0); 28 c.resize(10); 29 assert(distance(c.begin(), c.end()) == 10); 30 c.resize(20); 31 assert(distance(c.begin(), c.end()) == 20); 32 c.resize(5); 33 assert(distance(c.begin(), c.end()) == 5); 34 c.resize(0); 35 assert(distance(c.begin(), c.end()) == 0); 36 } 37 { 38 typedef int T; 39 typedef std::forward_list<T> C; 40 const T t[] = {0, 1, 2, 3, 4}; 41 C c(std::begin(t), std::end(t)); 42 43 c.resize(3); 44 assert(distance(c.begin(), c.end()) == 3); 45 assert(*next(c.begin(), 0) == 0); 46 assert(*next(c.begin(), 1) == 1); 47 assert(*next(c.begin(), 2) == 2); 48 49 c.resize(6); 50 assert(distance(c.begin(), c.end()) == 6); 51 assert(*next(c.begin(), 0) == 0); 52 assert(*next(c.begin(), 1) == 1); 53 assert(*next(c.begin(), 2) == 2); 54 assert(*next(c.begin(), 3) == 0); 55 assert(*next(c.begin(), 4) == 0); 56 assert(*next(c.begin(), 5) == 0); 57 58 c.resize(6); 59 assert(distance(c.begin(), c.end()) == 6); 60 assert(*next(c.begin(), 0) == 0); 61 assert(*next(c.begin(), 1) == 1); 62 assert(*next(c.begin(), 2) == 2); 63 assert(*next(c.begin(), 3) == 0); 64 assert(*next(c.begin(), 4) == 0); 65 assert(*next(c.begin(), 5) == 0); 66 } 67#if __cplusplus >= 201103L 68 { 69 typedef DefaultOnly T; 70 typedef std::forward_list<T, min_allocator<T>> C; 71 C c; 72 c.resize(0); 73 assert(distance(c.begin(), c.end()) == 0); 74 c.resize(10); 75 assert(distance(c.begin(), c.end()) == 10); 76 c.resize(20); 77 assert(distance(c.begin(), c.end()) == 20); 78 c.resize(5); 79 assert(distance(c.begin(), c.end()) == 5); 80 c.resize(0); 81 assert(distance(c.begin(), c.end()) == 0); 82 } 83 { 84 typedef int T; 85 typedef std::forward_list<T, min_allocator<T>> C; 86 const T t[] = {0, 1, 2, 3, 4}; 87 C c(std::begin(t), std::end(t)); 88 89 c.resize(3); 90 assert(distance(c.begin(), c.end()) == 3); 91 assert(*next(c.begin(), 0) == 0); 92 assert(*next(c.begin(), 1) == 1); 93 assert(*next(c.begin(), 2) == 2); 94 95 c.resize(6); 96 assert(distance(c.begin(), c.end()) == 6); 97 assert(*next(c.begin(), 0) == 0); 98 assert(*next(c.begin(), 1) == 1); 99 assert(*next(c.begin(), 2) == 2); 100 assert(*next(c.begin(), 3) == 0); 101 assert(*next(c.begin(), 4) == 0); 102 assert(*next(c.begin(), 5) == 0); 103 104 c.resize(6); 105 assert(distance(c.begin(), c.end()) == 6); 106 assert(*next(c.begin(), 0) == 0); 107 assert(*next(c.begin(), 1) == 1); 108 assert(*next(c.begin(), 2) == 2); 109 assert(*next(c.begin(), 3) == 0); 110 assert(*next(c.begin(), 4) == 0); 111 assert(*next(c.begin(), 5) == 0); 112 } 113#endif 114} 115