]> gcc.gnu.org Git - gcc.git/blame - gcc/testsuite/g++.dg/cpp0x/rv1p.C
PR c++/92590 - wrong handling of inherited default ctor.
[gcc.git] / gcc / testsuite / g++.dg / cpp0x / rv1p.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 } }
4f4b0ab8 6// { dg-skip-if "packed attribute missing for struct one/three/five/seven" { "epiphany-*-*" } }
c74459ea 7// { dg-additional-options "-fno-ipa-icf" }
8af2fec4
RY
8
9template <bool> struct sa;
10template <> struct sa<true> {};
11
41f3efb5
UB
12struct one {long x[1];};
13struct two {long x[2];};
14struct three {long x[3];};
15struct four {long x[4];};
16struct five {long x[5];};
17struct six {long x[6];};
18struct seven {long x[7];};
19struct eight {long x[8];};
8af2fec4
RY
20
21struct A
22{
23 A();
24 A(const volatile A&&);
25};
26
27 A source();
28const A c_source();
8a902edb
MP
29 volatile A v_source(); // { dg-warning "deprecated" "" { target c++2a } }
30const volatile A cv_source(); // { dg-warning "deprecated" "" { target c++2a } }
8af2fec4
RY
31
32// 1 at a time
33
34one sink_1_1( A&);
35
36int test1_1()
37{
38 A a;
d758e847 39 const A ca;
8af2fec4 40 volatile A va;
d758e847 41 const volatile A cva;
41f3efb5 42 sa<sizeof(sink_1_1(a)) == 1 * sizeof(long)> t1;
8af2fec4
RY
43 return 0;
44}
45
46two sink_1_2(const A&);
47
48int test1_2()
49{
50 A a;
d758e847 51 const A ca;
8af2fec4 52 volatile A va;
d758e847 53 const volatile A cva;
41f3efb5
UB
54 sa<sizeof(sink_1_2(a)) == 2 * sizeof(long)> t1;
55 sa<sizeof(sink_1_2(ca)) == 2 * sizeof(long)> t2;
56 sa<sizeof(sink_1_2(source())) == 2 * sizeof(long)> t5;
57 sa<sizeof(sink_1_2(c_source())) == 2 * sizeof(long)> t6;
8af2fec4
RY
58 return 0;
59}
60
61three sink_1_3(volatile A&);
62
63int test1_3()
64{
65 A a;
d758e847 66 const A ca;
8af2fec4 67 volatile A va;
d758e847 68 const volatile A cva;
41f3efb5
UB
69 sa<sizeof(sink_1_3(a)) == 3 * sizeof(long)> t1;
70 sa<sizeof(sink_1_3(va)) == 3 * sizeof(long)> t3;
8af2fec4
RY
71 return 0;
72}
73
74four sink_1_4(const volatile A&);
75
76int test1_4()
77{
78 A a;
d758e847 79 const A ca;
8af2fec4 80 volatile A va;
d758e847 81 const volatile A cva;
41f3efb5
UB
82 sa<sizeof(sink_1_4(a)) == 4 * sizeof(long)> t1;
83 sa<sizeof(sink_1_4(ca)) == 4 * sizeof(long)> t2;
84 sa<sizeof(sink_1_4(va)) == 4 * sizeof(long)> t3;
85 sa<sizeof(sink_1_4(cva)) == 4 * sizeof(long)> t4;
8af2fec4
RY
86 return 0;
87}
88
89five sink_1_5( A&&);
90
91int test1_5()
92{
93 A a;
d758e847 94 const A ca;
8af2fec4 95 volatile A va;
d758e847 96 const volatile A cva;
41f3efb5 97 sa<sizeof(sink_1_5(source())) == 5 * sizeof(long)> t5;
8af2fec4
RY
98 return 0;
99}
100
101six sink_1_6(const A&&);
102
103int test1_6()
104{
105 A a;
d758e847 106 const A ca;
8af2fec4 107 volatile A va;
d758e847 108 const volatile A cva;
41f3efb5
UB
109 sa<sizeof(sink_1_6(source())) == 6 * sizeof(long)> t5;
110 sa<sizeof(sink_1_6(c_source())) == 6 * sizeof(long)> t6;
8af2fec4
RY
111 return 0;
112}
113
114seven sink_1_7(volatile A&&);
115
116int test1_7()
117{
118 A a;
d758e847 119 const A ca;
8af2fec4 120 volatile A va;
d758e847 121 const volatile A cva;
41f3efb5
UB
122 sa<sizeof(sink_1_7(source())) == 7 * sizeof(long)> t5;
123 sa<sizeof(sink_1_7(v_source())) == 7 * sizeof(long)> t7;
8af2fec4
RY
124 return 0;
125}
126
127eight sink_1_8(const volatile A&&);
128
129int test1_8()
130{
131 A a;
d758e847 132 const A ca;
8af2fec4 133 volatile A va;
d758e847 134 const volatile A cva;
41f3efb5
UB
135 sa<sizeof(sink_1_8(source())) == 8 * sizeof(long)> t5;
136 sa<sizeof(sink_1_8(c_source())) == 8 * sizeof(long)> t6;
137 sa<sizeof(sink_1_8(v_source())) == 8 * sizeof(long)> t7;
138 sa<sizeof(sink_1_8(cv_source())) == 8 * sizeof(long)> t8;
8af2fec4
RY
139 return 0;
140}
141
142int main()
143{
144 return test1_1() + test1_2() + test1_3() + test1_4() +
145 test1_5() + test1_6() + test1_7() + test1_8();
146}
This page took 7.614373 seconds and 5 git commands to generate.