1 // RUN: %clang_cc1 -fsyntax-only -verify %s 2 3 struct ConstCopy { 4 ConstCopy(); 5 ConstCopy(const ConstCopy&); 6 }; 7 8 struct NonConstCopy { 9 NonConstCopy(); 10 NonConstCopy(NonConstCopy&); 11 }; 12 13 struct VirtualInheritsNonConstCopy : virtual NonConstCopy { 14 VirtualInheritsNonConstCopy(); 15 VirtualInheritsNonConstCopy(const VirtualInheritsNonConstCopy&); 16 }; 17 18 struct ImplicitNonConstCopy1 : NonConstCopy { // expected-note {{candidate constructor}} 19 ImplicitNonConstCopy1(); // expected-note {{candidate constructor}} 20 }; 21 22 struct ImplicitNonConstCopy2 { // expected-note {{candidate constructor}} 23 ImplicitNonConstCopy2(); // expected-note {{candidate constructor}} 24 NonConstCopy ncc; 25 }; 26 27 struct ImplicitNonConstCopy3 { // expected-note {{candidate constructor}} 28 ImplicitNonConstCopy3(); // expected-note {{candidate constructor}} 29 NonConstCopy ncc_array[2][3]; 30 }; 31 32 struct ImplicitNonConstCopy4 : VirtualInheritsNonConstCopy { // expected-note {{candidate constructor}} 33 ImplicitNonConstCopy4(); // expected-note {{candidate constructor}} 34 }; 35 test_non_const_copy(const ImplicitNonConstCopy1 & cincc1,const ImplicitNonConstCopy2 & cincc2,const ImplicitNonConstCopy3 & cincc3,const ImplicitNonConstCopy4 & cincc4)36void test_non_const_copy(const ImplicitNonConstCopy1 &cincc1, 37 const ImplicitNonConstCopy2 &cincc2, 38 const ImplicitNonConstCopy3 &cincc3, 39 const ImplicitNonConstCopy4 &cincc4) { 40 (void)sizeof(ImplicitNonConstCopy1(cincc1)); // expected-error{{no matching conversion for functional-style cast from 'const ImplicitNonConstCopy1' to 'ImplicitNonConstCopy1'}} 41 (void)sizeof(ImplicitNonConstCopy2(cincc2)); // expected-error{{no matching conversion for functional-style cast from 'const ImplicitNonConstCopy2' to 'ImplicitNonConstCopy2'}} 42 (void)sizeof(ImplicitNonConstCopy3(cincc3)); // expected-error{{no matching conversion for functional-style cast from 'const ImplicitNonConstCopy3' to 'ImplicitNonConstCopy3'}} 43 (void)sizeof(ImplicitNonConstCopy4(cincc4)); // expected-error{{no matching conversion for functional-style cast from 'const ImplicitNonConstCopy4' to 'ImplicitNonConstCopy4'}} 44 } 45