]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/testsuite/g++.dg/cpp0x/rv1n.C
call.c (struct conversion_info): Rename 'from_type' to 'from'.
[thirdparty/gcc.git] / gcc / testsuite / g++.dg / cpp0x / rv1n.C
CommitLineData
8af2fec4
RY
1// I, Howard Hinnant, hereby place this code in the public domain.
2
e7f1930f 3// Test overload resolution among reference types
8af2fec4 4
4b2e63de 5// { dg-do compile { target c++11 } }
8af2fec4
RY
6
7template <bool> struct sa;
8template <> struct sa<true> {};
9
10struct one {char x[1];};
11struct two {char x[2];};
12struct three {char x[3];};
13struct four {char x[4];};
14struct five {char x[5];};
15struct six {char x[6];};
16struct seven {char x[7];};
17struct eight {char x[8];};
18
19struct A
20{
21 A();
a2e70335 22 A(const volatile A&&);
8af2fec4
RY
23};
24
25 A source();
26const A c_source();
27 volatile A v_source();
28const volatile A cv_source();
29
30// 1 at a time
31
7abebba7 32one sink_1_1( A&); // { dg-message "" }
8af2fec4
RY
33
34int test1_1()
35{
36 A a;
a2e70335 37 const A ca = a; // { dg-error "deleted" }
8af2fec4 38 volatile A va;
a2e70335 39 const volatile A cva = a; // { dg-error "deleted" }
89606913
JM
40 sink_1_1(ca); // { dg-error "" }
41 sink_1_1(va); // { dg-error "" }
42 sink_1_1(cva); // { dg-error "" }
43 sink_1_1(source()); // { dg-error "" }
44 sink_1_1(c_source()); // { dg-error "" }
45 sink_1_1(v_source()); // { dg-error "" }
46 sink_1_1(cv_source()); // { dg-error "" }
8af2fec4
RY
47 return 0;
48}
49
7abebba7 50two sink_1_2(const A&); // { dg-message "" }
8af2fec4
RY
51
52int test1_2()
53{
54 A a;
a2e70335 55 const A ca = a; // { dg-error "deleted" }
8af2fec4 56 volatile A va;
a2e70335 57 const volatile A cva = a; // { dg-error "deleted" }
89606913
JM
58 sink_1_2(va); // { dg-error "" }
59 sink_1_2(cva); // { dg-error "" }
60 sink_1_2(v_source()); // { dg-error "" }
61 sink_1_2(cv_source()); // { dg-error "" }
8af2fec4
RY
62 return 0;
63}
64
7abebba7 65three sink_1_3(volatile A&); // { dg-message "" }
8af2fec4
RY
66
67int test1_3()
68{
69 A a;
a2e70335 70 const A ca = a; // { dg-error "deleted" }
8af2fec4 71 volatile A va;
a2e70335 72 const volatile A cva = a; // { dg-error "deleted" }
89606913
JM
73 sink_1_3(ca); // { dg-error "" }
74 sink_1_3(cva); // { dg-error "" }
75 sink_1_3(source()); // { dg-error "" }
76 sink_1_3(c_source()); // { dg-error "" }
77 sink_1_3(v_source()); // { dg-error "" }
78 sink_1_3(cv_source()); // { dg-error "" }
8af2fec4
RY
79 return 0;
80}
81
7abebba7 82four sink_1_4(const volatile A&); // { dg-message "" }
8af2fec4
RY
83
84int test1_4()
85{
86 A a;
a2e70335 87 const A ca = a; // { dg-error "deleted" }
8af2fec4 88 volatile A va;
a2e70335 89 const volatile A cva = a; // { dg-error "deleted" }
89606913
JM
90 sink_1_4(source()); // { dg-error "" }
91 sink_1_4(c_source()); // { dg-error "" }
92 sink_1_4(v_source()); // { dg-error "" }
93 sink_1_4(cv_source()); // { dg-error "" }
8af2fec4
RY
94 return 0;
95}
96
7abebba7 97five sink_1_5( A&&); // { dg-message "" }
8af2fec4
RY
98
99int test1_5()
100{
101 A a;
a2e70335 102 const A ca = a; // { dg-error "deleted" }
8af2fec4 103 volatile A va;
a2e70335 104 const volatile A cva = a; // { dg-error "deleted" }
e7f1930f 105 sink_1_5(a); // { dg-error "lvalue" }
89606913
JM
106 sink_1_5(ca); // { dg-error "" }
107 sink_1_5(va); // { dg-error "" }
108 sink_1_5(cva); // { dg-error "" }
109 sink_1_5(c_source()); // { dg-error "" }
110 sink_1_5(v_source()); // { dg-error "" }
111 sink_1_5(cv_source()); // { dg-error "" }
8af2fec4
RY
112 return 0;
113}
114
7abebba7 115six sink_1_6(const A&&); // { dg-message "" }
8af2fec4
RY
116
117int test1_6()
118{
119 A a;
a2e70335 120 const A ca = a; // { dg-error "deleted" }
8af2fec4 121 volatile A va;
a2e70335 122 const volatile A cva = a; // { dg-error "deleted" }
e7f1930f
JM
123 sink_1_6(a); // { dg-error "lvalue" }
124 sink_1_6(ca); // { dg-error "lvalue" }
89606913
JM
125 sink_1_6(va); // { dg-error "" }
126 sink_1_6(cva); // { dg-error "" }
127 sink_1_6(v_source()); // { dg-error "" }
128 sink_1_6(cv_source()); // { dg-error "" }
8af2fec4
RY
129 return 0;
130}
131
7abebba7 132seven sink_1_7(volatile A&&); // { dg-message "" }
8af2fec4
RY
133
134int test1_7()
135{
136 A a;
a2e70335 137 const A ca = a; // { dg-error "deleted" }
8af2fec4 138 volatile A va;
a2e70335 139 const volatile A cva = a; // { dg-error "deleted" }
e7f1930f 140 sink_1_7(a); // { dg-error "lvalue" }
89606913 141 sink_1_7(ca); // { dg-error "" }
e7f1930f 142 sink_1_7(va); // { dg-error "lvalue" }
89606913
JM
143 sink_1_7(cva); // { dg-error "" }
144 sink_1_7(c_source()); // { dg-error "" }
145 sink_1_7(cv_source()); // { dg-error "" }
8af2fec4
RY
146 return 0;
147}
148
7abebba7 149eight sink_1_8(const volatile A&&); // { dg-message "" }
e7f1930f
JM
150
151int test1_8()
152{
153 A a;
a2e70335 154 const A ca = a; // { dg-error "deleted" }
e7f1930f 155 volatile A va;
a2e70335 156 const volatile A cva = a; // { dg-error "deleted" }
e7f1930f
JM
157 sink_1_8(a); // { dg-error "lvalue" }
158 sink_1_8(ca); // { dg-error "lvalue" }
159 sink_1_8(va); // { dg-error "lvalue" }
160 sink_1_8(cva); // { dg-error "lvalue" }
161 return 0;
162}
163
8af2fec4
RY
164int main()
165{
166 return test1_1() + test1_2() + test1_3() + test1_5() +
167 test1_6() + test1_7();
168}