blob: 07590f06f9552b3ec4d54e86ba84327b4e7683b2 (
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
|
// { dg-options "-std=c++0x" }
#define BUG
struct type
{
type() { }
type(const type&) { }
private:
type(type&&);
};
template<typename _Tp>
struct identity
{
typedef _Tp type;
};
template<typename _Tp>
inline _Tp&&
forward(typename identity<_Tp>::type&& __t)
{ return __t; }
struct vec
{
template<typename _Args>
void
bar(_Args&& __args)
#ifdef BUG
;
#else
{
type(forward<_Args>(__args));
}
#endif
};
#ifdef BUG
template<typename _Args>
void
vec::bar(_Args&& __args)
{
type(forward<_Args>(__args));
}
#endif
int main()
{
vec v;
type c;
v.bar(c);
}
|