// I, Howard Hinnant, hereby place this code in the public domain. // Test overload resolution among reference types // { dg-do compile { target c++11 } } // { dg-skip-if "packed attribute missing for struct one/three/five/seven" { "epiphany-*-*" } { "*" } { "" } } template struct sa; template <> struct sa {}; struct one {long x[1];}; struct two {long x[2];}; struct three {long x[3];}; struct four {long x[4];}; struct five {long x[5];}; struct six {long x[6];}; struct seven {long x[7];}; struct eight {long x[8];}; struct A { A(); A(const volatile A&&); }; A source(); const A c_source(); volatile A v_source(); const volatile A cv_source(); // 5 at a time one sink_5_12345( A&); two sink_5_12345(const A&); three sink_5_12345(volatile A&); four sink_5_12345(const volatile A&); five sink_5_12345( A&&); int test5_12345() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t4; sa t5; sa t6; return 0; } one sink_5_12346( A&); two sink_5_12346(const A&); three sink_5_12346(volatile A&); four sink_5_12346(const volatile A&); six sink_5_12346(const A&&); int test5_12346() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t4; sa t5; sa t6; return 0; } one sink_5_12347( A&); two sink_5_12347(const A&); three sink_5_12347(volatile A&); four sink_5_12347(const volatile A&); seven sink_5_12347(volatile A&&); int test5_12347() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t4; sa t5; sa t6; sa t7; return 0; } one sink_5_12348( A&); two sink_5_12348(const A&); three sink_5_12348(volatile A&); four sink_5_12348(const volatile A&); eight sink_5_12348(const volatile A&&); int test5_12348() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t4; sa t5; sa t6; sa t7; sa t8; return 0; } one sink_5_12356( A&); two sink_5_12356(const A&); three sink_5_12356(volatile A&); five sink_5_12356( A&&); six sink_5_12356(const A&&); int test5_12356() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t5; sa t6; return 0; } one sink_5_12357( A&); two sink_5_12357(const A&); three sink_5_12357(volatile A&); five sink_5_12357( A&&); seven sink_5_12357(volatile A&&); int test5_12357() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t5; sa t6; sa t7; return 0; } one sink_5_12358( A&); two sink_5_12358(const A&); three sink_5_12358(volatile A&); five sink_5_12358( A&&); eight sink_5_12358(const volatile A&&); int test5_12358() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t5; sa t6; sa t7; sa t8; return 0; } one sink_5_12367( A&); two sink_5_12367(const A&); three sink_5_12367(volatile A&); six sink_5_12367(const A&&); seven sink_5_12367(volatile A&&); int test5_12367() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t6; sa t7; return 0; } one sink_5_12368( A&); two sink_5_12368(const A&); three sink_5_12368(volatile A&); six sink_5_12368(const A&&); eight sink_5_12368(const volatile A&&); int test5_12368() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t5; sa t6; sa t7; sa t8; return 0; } one sink_5_12378( A&); two sink_5_12378(const A&); three sink_5_12378(volatile A&); seven sink_5_12378(volatile A&&); eight sink_5_12378(const volatile A&&); int test5_12378() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t5; sa t6; sa t7; sa t8; return 0; } one sink_5_12456( A&); two sink_5_12456(const A&); four sink_5_12456(const volatile A&); five sink_5_12456( A&&); six sink_5_12456(const A&&); int test5_12456() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t4; sa t5; sa t6; return 0; } one sink_5_12457( A&); two sink_5_12457(const A&); four sink_5_12457(const volatile A&); five sink_5_12457( A&&); seven sink_5_12457(volatile A&&); int test5_12457() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t4; sa t5; sa t6; sa t7; return 0; } one sink_5_12458( A&); two sink_5_12458(const A&); four sink_5_12458(const volatile A&); five sink_5_12458( A&&); eight sink_5_12458(const volatile A&&); int test5_12458() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t4; sa t5; sa t6; sa t7; sa t8; return 0; } one sink_5_12467( A&); two sink_5_12467(const A&); four sink_5_12467(const volatile A&); six sink_5_12467(const A&&); seven sink_5_12467(volatile A&&); int test5_12467() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t4; sa t6; sa t7; return 0; } one sink_5_12468( A&); two sink_5_12468(const A&); four sink_5_12468(const volatile A&); six sink_5_12468(const A&&); eight sink_5_12468(const volatile A&&); int test5_12468() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t4; sa t5; sa t6; sa t7; sa t8; return 0; } one sink_5_12478( A&); two sink_5_12478(const A&); four sink_5_12478(const volatile A&); seven sink_5_12478(volatile A&&); eight sink_5_12478(const volatile A&&); int test5_12478() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t4; sa t5; sa t6; sa t7; sa t8; return 0; } one sink_5_12567( A&); two sink_5_12567(const A&); five sink_5_12567( A&&); six sink_5_12567(const A&&); seven sink_5_12567(volatile A&&); int test5_12567() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t5; sa t6; sa t7; return 0; } one sink_5_12568( A&); two sink_5_12568(const A&); five sink_5_12568( A&&); six sink_5_12568(const A&&); eight sink_5_12568(const volatile A&&); int test5_12568() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t5; sa t6; sa t7; sa t8; return 0; } one sink_5_12578( A&); two sink_5_12578(const A&); five sink_5_12578( A&&); seven sink_5_12578(volatile A&&); eight sink_5_12578(const volatile A&&); int test5_12578() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t5; sa t6; sa t7; sa t8; return 0; } one sink_5_12678( A&); two sink_5_12678(const A&); six sink_5_12678(const A&&); seven sink_5_12678(volatile A&&); eight sink_5_12678(const volatile A&&); int test5_12678() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t6; sa t7; sa t8; return 0; } one sink_5_13456( A&); three sink_5_13456(volatile A&); four sink_5_13456(const volatile A&); five sink_5_13456( A&&); six sink_5_13456(const A&&); int test5_13456() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t4; sa t5; sa t6; return 0; } one sink_5_13457( A&); three sink_5_13457(volatile A&); four sink_5_13457(const volatile A&); five sink_5_13457( A&&); seven sink_5_13457(volatile A&&); int test5_13457() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t4; sa t5; sa t7; return 0; } one sink_5_13458( A&); three sink_5_13458(volatile A&); four sink_5_13458(const volatile A&); five sink_5_13458( A&&); eight sink_5_13458(const volatile A&&); int test5_13458() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t4; sa t5; sa t6; sa t7; sa t8; return 0; } one sink_5_13467( A&); three sink_5_13467(volatile A&); four sink_5_13467(const volatile A&); six sink_5_13467(const A&&); seven sink_5_13467(volatile A&&); int test5_13467() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t4; sa t6; sa t7; return 0; } one sink_5_13468( A&); three sink_5_13468(volatile A&); four sink_5_13468(const volatile A&); six sink_5_13468(const A&&); eight sink_5_13468(const volatile A&&); int test5_13468() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t4; sa t5; sa t6; sa t7; sa t8; return 0; } one sink_5_13478( A&); three sink_5_13478(volatile A&); four sink_5_13478(const volatile A&); seven sink_5_13478(volatile A&&); eight sink_5_13478(const volatile A&&); int test5_13478() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t4; sa t5; sa t6; sa t7; sa t8; return 0; } one sink_5_13567( A&); three sink_5_13567(volatile A&); five sink_5_13567( A&&); six sink_5_13567(const A&&); seven sink_5_13567(volatile A&&); int test5_13567() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t3; sa t5; sa t6; sa t7; return 0; } one sink_5_13568( A&); three sink_5_13568(volatile A&); five sink_5_13568( A&&); six sink_5_13568(const A&&); eight sink_5_13568(const volatile A&&); int test5_13568() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t3; sa t5; sa t6; sa t7; sa t8; return 0; } one sink_5_13578( A&); three sink_5_13578(volatile A&); five sink_5_13578( A&&); seven sink_5_13578(volatile A&&); eight sink_5_13578(const volatile A&&); int test5_13578() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t3; sa t5; sa t6; sa t7; sa t8; return 0; } one sink_5_13678( A&); three sink_5_13678(volatile A&); six sink_5_13678(const A&&); seven sink_5_13678(volatile A&&); eight sink_5_13678(const volatile A&&); int test5_13678() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t3; sa t6; sa t7; sa t8; return 0; } one sink_5_14567( A&); four sink_5_14567(const volatile A&); five sink_5_14567( A&&); six sink_5_14567(const A&&); seven sink_5_14567(volatile A&&); int test5_14567() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t4; sa t5; sa t6; sa t7; return 0; } one sink_5_14568( A&); four sink_5_14568(const volatile A&); five sink_5_14568( A&&); six sink_5_14568(const A&&); eight sink_5_14568(const volatile A&&); int test5_14568() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t4; sa t5; sa t6; sa t7; sa t8; return 0; } one sink_5_14578( A&); four sink_5_14578(const volatile A&); five sink_5_14578( A&&); seven sink_5_14578(volatile A&&); eight sink_5_14578(const volatile A&&); int test5_14578() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t4; sa t5; sa t6; sa t7; sa t8; return 0; } one sink_5_14678( A&); four sink_5_14678(const volatile A&); six sink_5_14678(const A&&); seven sink_5_14678(volatile A&&); eight sink_5_14678(const volatile A&&); int test5_14678() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t4; sa t6; sa t7; sa t8; return 0; } one sink_5_15678( A&); five sink_5_15678( A&&); six sink_5_15678(const A&&); seven sink_5_15678(volatile A&&); eight sink_5_15678(const volatile A&&); int test5_15678() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t5; sa t6; sa t7; sa t8; return 0; } two sink_5_23456(const A&); three sink_5_23456(volatile A&); four sink_5_23456(const volatile A&); five sink_5_23456( A&&); six sink_5_23456(const A&&); int test5_23456() { A a; const A ca; volatile A va; const volatile A cva; sa t2; sa t3; sa t4; sa t5; sa t6; return 0; } two sink_5_23457(const A&); three sink_5_23457(volatile A&); four sink_5_23457(const volatile A&); five sink_5_23457( A&&); seven sink_5_23457(volatile A&&); int test5_23457() { A a; const A ca; volatile A va; const volatile A cva; sa t2; sa t3; sa t4; sa t5; sa t6; sa t7; return 0; } two sink_5_23458(const A&); three sink_5_23458(volatile A&); four sink_5_23458(const volatile A&); five sink_5_23458( A&&); eight sink_5_23458(const volatile A&&); int test5_23458() { A a; const A ca; volatile A va; const volatile A cva; sa t2; sa t3; sa t4; sa t5; sa t6; sa t7; sa t8; return 0; } two sink_5_23467(const A&); three sink_5_23467(volatile A&); four sink_5_23467(const volatile A&); six sink_5_23467(const A&&); seven sink_5_23467(volatile A&&); int test5_23467() { A a; const A ca; volatile A va; const volatile A cva; sa t2; sa t3; sa t4; sa t6; sa t7; return 0; } two sink_5_23468(const A&); three sink_5_23468(volatile A&); four sink_5_23468(const volatile A&); six sink_5_23468(const A&&); eight sink_5_23468(const volatile A&&); int test5_23468() { A a; const A ca; volatile A va; const volatile A cva; sa t2; sa t3; sa t4; sa t5; sa t6; sa t7; sa t8; return 0; } two sink_5_23478(const A&); three sink_5_23478(volatile A&); four sink_5_23478(const volatile A&); seven sink_5_23478(volatile A&&); eight sink_5_23478(const volatile A&&); int test5_23478() { A a; const A ca; volatile A va; const volatile A cva; sa t2; sa t3; sa t4; sa t5; sa t6; sa t7; sa t8; return 0; } two sink_5_23567(const A&); three sink_5_23567(volatile A&); five sink_5_23567( A&&); six sink_5_23567(const A&&); seven sink_5_23567(volatile A&&); int test5_23567() { A a; const A ca; volatile A va; const volatile A cva; sa t2; sa t3; sa t5; sa t6; sa t7; return 0; } two sink_5_23568(const A&); three sink_5_23568(volatile A&); five sink_5_23568( A&&); six sink_5_23568(const A&&); eight sink_5_23568(const volatile A&&); int test5_23568() { A a; const A ca; volatile A va; const volatile A cva; sa t2; sa t3; sa t5; sa t6; sa t7; sa t8; return 0; } two sink_5_23578(const A&); three sink_5_23578(volatile A&); five sink_5_23578( A&&); seven sink_5_23578(volatile A&&); eight sink_5_23578(const volatile A&&); int test5_23578() { A a; const A ca; volatile A va; const volatile A cva; sa t2; sa t3; sa t5; sa t6; sa t7; sa t8; return 0; } two sink_5_23678(const A&); three sink_5_23678(volatile A&); six sink_5_23678(const A&&); seven sink_5_23678(volatile A&&); eight sink_5_23678(const volatile A&&); int test5_23678() { A a; const A ca; volatile A va; const volatile A cva; sa t2; sa t3; sa t6; sa t7; sa t8; return 0; } two sink_5_24567(const A&); four sink_5_24567(const volatile A&); five sink_5_24567( A&&); six sink_5_24567(const A&&); seven sink_5_24567(volatile A&&); int test5_24567() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t4; sa t5; sa t6; sa t7; return 0; } two sink_5_24568(const A&); four sink_5_24568(const volatile A&); five sink_5_24568( A&&); six sink_5_24568(const A&&); eight sink_5_24568(const volatile A&&); int test5_24568() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t4; sa t5; sa t6; sa t7; sa t8; return 0; } two sink_5_24578(const A&); four sink_5_24578(const volatile A&); five sink_5_24578( A&&); seven sink_5_24578(volatile A&&); eight sink_5_24578(const volatile A&&); int test5_24578() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t4; sa t5; sa t6; sa t7; sa t8; return 0; } two sink_5_24678(const A&); four sink_5_24678(const volatile A&); six sink_5_24678(const A&&); seven sink_5_24678(volatile A&&); eight sink_5_24678(const volatile A&&); int test5_24678() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t4; sa t6; sa t7; sa t8; return 0; } two sink_5_25678(const A&); five sink_5_25678( A&&); six sink_5_25678(const A&&); seven sink_5_25678(volatile A&&); eight sink_5_25678(const volatile A&&); int test5_25678() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t5; sa t6; sa t7; sa t8; return 0; } three sink_5_34567(volatile A&); four sink_5_34567(const volatile A&); five sink_5_34567( A&&); six sink_5_34567(const A&&); seven sink_5_34567(volatile A&&); int test5_34567() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t4; sa t5; sa t6; sa t7; return 0; } three sink_5_34568(volatile A&); four sink_5_34568(const volatile A&); five sink_5_34568( A&&); six sink_5_34568(const A&&); eight sink_5_34568(const volatile A&&); int test5_34568() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t4; sa t5; sa t6; sa t7; sa t8; return 0; } three sink_5_34578(volatile A&); four sink_5_34578(const volatile A&); five sink_5_34578( A&&); seven sink_5_34578(volatile A&&); eight sink_5_34578(const volatile A&&); int test5_34578() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t4; sa t5; sa t6; sa t7; sa t8; return 0; } three sink_5_34678(volatile A&); four sink_5_34678(const volatile A&); six sink_5_34678(const A&&); seven sink_5_34678(volatile A&&); eight sink_5_34678(const volatile A&&); int test5_34678() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t4; sa t6; sa t7; sa t8; return 0; } three sink_5_35678(volatile A&); five sink_5_35678( A&&); six sink_5_35678(const A&&); seven sink_5_35678(volatile A&&); eight sink_5_35678(const volatile A&&); int test5_35678() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t3; sa t5; sa t6; sa t7; sa t8; return 0; } four sink_5_45678(const volatile A&); five sink_5_45678( A&&); six sink_5_45678(const A&&); seven sink_5_45678(volatile A&&); eight sink_5_45678(const volatile A&&); int test5_45678() { A a; const A ca; volatile A va; const volatile A cva; sa t1; sa t2; sa t3; sa t4; sa t5; sa t6; sa t7; sa t8; return 0; } int main() { return test5_12345() + test5_12346() + test5_12347() + test5_12348() + test5_12356() + test5_12357() + test5_12358() + test5_12367() + test5_12368() + test5_12378() + test5_12456() + test5_12457() + test5_12458() + test5_12467() + test5_12468() + test5_12478() + test5_12567() + test5_12568() + test5_12578() + test5_12678() + test5_13456() + test5_13457() + test5_13458() + test5_13467() + test5_13468() + test5_13478() + test5_13567() + test5_13568() + test5_13578() + test5_13678() + test5_14567() + test5_14568() + test5_14578() + test5_14678() + test5_15678() + test5_23456() + test5_23457() + test5_23458() + test5_23467() + test5_23468() + test5_23478() + test5_23567() + test5_23568() + test5_23578() + test5_23678() + test5_24567() + test5_24568() + test5_24578() + test5_24678() + test5_25678() + test5_34567() + test5_34568() + test5_34578() + test5_34678() + test5_35678() + test5_45678(); }