blob: c9c426484925f9d62ffda05bfee2d18d1bcf6a8f [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// <list>
11
12// template <class... Args> void emplace_back(Args&&... args);
13
14#include <list>
15#include <cassert>
16
17class A
18{
19 int i_;
20 double d_;
21
22 A(const A&);
23 A& operator=(const A&);
24public:
25 A(int i, double d)
26 : i_(i), d_(d) {}
27
28 int geti() const {return i_;}
29 double getd() const {return d_;}
30};
31
32int main()
33{
Howard Hinnant73d21a42010-09-04 23:28:19 +000034#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000035 std::list<A> c;
36 c.emplace_back(2, 3.5);
37 assert(c.size() == 1);
38 assert(c.front().geti() == 2);
39 assert(c.front().getd() == 3.5);
40 c.emplace_back(3, 4.5);
41 assert(c.size() == 2);
42 assert(c.front().geti() == 2);
43 assert(c.front().getd() == 3.5);
44 assert(c.back().geti() == 3);
45 assert(c.back().getd() == 4.5);
Howard Hinnant73d21a42010-09-04 23:28:19 +000046#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000047}