blob: 20b54fe674285692681421ed0a0d8842706755bf [file] [log] [blame]
Howard Hinnantbc8d3f92010-05-11 19:42:16 +00001//===----------------------------------------------------------------------===//
2//
Howard Hinnantf5256e12010-05-11 21:36:01 +00003// The LLVM Compiler Infrastructure
Howard Hinnantbc8d3f92010-05-11 19:42:16 +00004//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10// <forward_list>
11
12// iterator insert_after(const_iterator p, initializer_list<value_type> il);
13
14#include <forward_list>
15#include <cassert>
16
17int main()
18{
Howard Hinnant73d21a42010-09-04 23:28:19 +000019#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000020 {
21 typedef int T;
22 typedef std::forward_list<T> C;
23 typedef C::iterator I;
24 C c;
25 I i = c.insert_after(c.cbefore_begin(), {});
26 assert(i == c.before_begin());
27 assert(distance(c.begin(), c.end()) == 0);
28
29 i = c.insert_after(c.cbefore_begin(), {0, 1, 2});
Howard Hinnantba590bd2010-08-19 17:40:04 +000030 assert(i == next(c.before_begin(), 3));
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000031 assert(distance(c.begin(), c.end()) == 3);
32 assert(*next(c.begin(), 0) == 0);
33 assert(*next(c.begin(), 1) == 1);
34 assert(*next(c.begin(), 2) == 2);
35
36 i = c.insert_after(c.begin(), {3, 4});
Howard Hinnantba590bd2010-08-19 17:40:04 +000037 assert(i == next(c.begin(), 2));
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000038 assert(distance(c.begin(), c.end()) == 5);
39 assert(*next(c.begin(), 0) == 0);
40 assert(*next(c.begin(), 1) == 3);
41 assert(*next(c.begin(), 2) == 4);
42 assert(*next(c.begin(), 3) == 1);
43 assert(*next(c.begin(), 4) == 2);
44 }
Howard Hinnant73d21a42010-09-04 23:28:19 +000045#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000046}