OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libstdc++-v3/] [testsuite/] [20_util/] [forward/] [b.cc] - Blame information for rev 742

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 742 jeremybenn
// { dg-options "-std=gnu++0x" }
2
 
3
// Copyright (C) 2010 Free Software Foundation, Inc.
4
//
5
// This file is part of the GNU ISO C++ Library.  This library is free
6
// software; you can redistribute it and/or modify it under the
7
// terms of the GNU General Public License as published by the
8
// Free Software Foundation; either version 3, or (at your option)
9
// any later version.
10
//
11
// This library is distributed in the hope that it will be useful,
12
// but WITHOUT ANY WARRANTY; without even the implied warranty of
13
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
// GNU General Public License for more details.
15
//
16
// You should have received a copy of the GNU General Public License along
17
// with this library; see the file COPYING3.  If not see
18
// <http://www.gnu.org/licenses/>.
19
 
20
#include <list>
21
#include <testsuite_hooks.h>
22
 
23
template <class T>
24
  struct C
25
  {
26
    T t_;
27
 
28
    template <class U,
29
              class = typename std::enable_if
30
                    <
31
                        !std::is_lvalue_reference<U>::value
32
                    >::type>
33
      C(U&& u) : t_(std::forward<T>(std::move(u).get())) {}
34
  };
35
 
36
class A
37
{
38
  int data_;
39
public:
40
  explicit
41
  A(int data = 1)
42
  : data_(data) { }
43
 
44
  ~A() { data_ = -1; }
45
 
46
  void test() const
47
  {
48
    bool test __attribute__((unused)) = true;
49
    VERIFY( data_ == 3 );
50
  }
51
};
52
 
53
class Awrap
54
{
55
  A a_;
56
public:
57
  explicit Awrap(const A& a) : a_(a) { }
58
  A get() const { return a_; }
59
};
60
 
61
template <class C>
62
void test(C c)
63
{
64
  c.t_.test();
65
}
66
 
67
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2951.html
68
// Test B.
69
int main()
70
{
71
  std::list<C<A> > list;
72
  A a(3);
73
  C<A> c((Awrap(a)));
74
  list.push_back(c);
75
  test(c);
76
  test(list.front());
77
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.