aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/pr57101.C
blob: 94b576f4b87d5c42c4b9f357cd91e43ea952589a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
// { dg-do compile { target c++11 } }
// { dg-options "-fcompare-debug" }

typedef long unsigned size_t;
namespace
{
  template < typename _Tp, _Tp __v > struct integral_constant
  {
    static const _Tp value = __v;
  };
  typedef integral_constant < bool, false > false_type;
  template < typename > struct remove_cv;
  template < typename > struct __is_void_helper:false_type
  {
  };
  template
    <
    typename
    _Tp
    >
    struct
    is_void:integral_constant
    < bool, (__is_void_helper < typename remove_cv < _Tp >::type >::value) >
  {
  };
  template < typename > struct is_function:false_type
  {
  };
  template < typename _Tp > struct remove_const
  {
    typedef _Tp type;
  };
  template < typename _Tp > struct remove_volatile
  {
    typedef _Tp type;
  };
  template < typename _Tp > struct remove_cv
  {
    typedef
      typename
      remove_const < typename remove_volatile < _Tp >::type >::type type;
  };
  template < typename > struct is_lvalue_reference:false_type
  {
  };
  template < typename _Tp, bool = is_void < _Tp >::value > struct __add_rvalue_reference_helper
  {
    typedef _Tp type;
  };
  template
    <
    typename
    _Tp > struct add_rvalue_reference:__add_rvalue_reference_helper < _Tp >
  {
  };
  template
    < typename _Tp > typename add_rvalue_reference < _Tp >::type declval ();
  template
    <
    typename,
    typename
    _To, bool = (is_function < _To >::value) > struct __is_convertible_helper;
  template
    <
    typename
    _From, typename _To > struct __is_convertible_helper <_From, _To, false >
  {
    static const bool __value = sizeof ((declval < _From > ()));
  };
  template
    <
    typename
    _From,
    typename
    _To
    >
    struct
    is_convertible:integral_constant
    < bool, __is_convertible_helper < _From, _To >::__value >
  {
  };
  template < bool, typename _Tp = void >struct enable_if
  {
    typedef _Tp type;
  };
  template < typename _Tp > struct identity
  {
    typedef _Tp type;
  };
  template
    <
    typename
    _Tp
    >
    typename
    enable_if
    <
    is_lvalue_reference
    < _Tp >::value, _Tp >::type forward (typename identity < _Tp >::type)
  {
    return 0;

  }
  template < class _T1, class > struct pair
  {
    _T1 first;
    template < class _U1, class = typename enable_if < is_convertible < _U1, _T1 >::value >::type > pair (_U1 __x):
    first
      (forward < _U1 > (__x))
    {
    }
  };
}

namespace __gnu_cxx
{
  template < typename > class new_allocator
  {
  };
}

namespace std
{
  template < typename _Tp > class allocator:__gnu_cxx::new_allocator < _Tp >
  {
  public:
    template < typename > struct rebind
    {
      typedef allocator other;
    };
  };
  template < typename, typename > struct unary_function;
  template < typename, typename, typename > struct binary_function
  {
  };
  template < typename _Tp > struct less:binary_function < _Tp, _Tp, bool >
  {
  };
  template
    <
    typename
    _Pair
    > struct _Select1st:unary_function < _Pair, typename _Pair::first_type >
  {
  };
  template < typename > struct _Rb_tree_node;
  template
    <
    typename,
    typename
    _Val,
    typename,
    typename _Compare, typename _Alloc = allocator < _Val > >class _Rb_tree
  {
    typedef
      typename
      _Alloc::template
      rebind < _Rb_tree_node < _Val > >::other _Node_allocator;
  public:
    typedef _Alloc allocator_type;
    template < typename _Key_compare > struct _Rb_tree_impl
    {
      _Rb_tree_impl (_Key_compare, _Node_allocator);
    };
    _Rb_tree_impl < _Compare > _M_impl;
  _Rb_tree (_Compare __comp, allocator_type __a):
    _M_impl (__comp, __a)
    {
    }
  };
  template < class _E > class initializer_list
  {
    typedef size_t size_type;
    typedef _E *iterator;
    iterator _M_array;
    size_type _M_len;
  };
  template
    <
    typename
    _Key,
    typename
    _Tp,
    typename
    _Compare
    =
    less
    <
    _Key >, typename _Alloc = allocator < pair < _Key, _Tp > > >class multimap
  {
    typedef _Key key_type;
    typedef pair < _Key, _Tp > value_type;
    typedef _Compare key_compare;
    typedef _Alloc allocator_type;
    typedef
      _Rb_tree
      <
      key_type,
      value_type, _Select1st < value_type >, key_compare > _Rep_type;
    _Rep_type _M_t;
  public:
  multimap (initializer_list < value_type >, _Compare __comp = _Compare (), allocator_type __a = allocator_type ()):
    _M_t
      (__comp, __a)
    {
    }
  };
}

using namespace std;
void
test01 ()
{
  typedef multimap < int, double >Container;
  Container (
	      {
	      {
	      1}
	      }
  );
}