1 // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s 2 3 struct X1 { 4 X1(); 5 }; 6 7 struct X2 { 8 X2(); 9 ~X2(); 10 }; 11 12 struct X3 { 13 X3(const X3&) = default; 14 }; 15 16 struct X4 { 17 X4(const X4&) = default; 18 X4(X4&); 19 }; 20 21 void vararg(...); 22 23 void g(); 24 f(X1 x1,X2 x2,X3 x3,X4 x4)25void f(X1 x1, X2 x2, X3 x3, X4 x4) { 26 vararg(x1); // OK 27 vararg(x2); // expected-error{{cannot pass object of non-trivial type 'X2' through variadic function; call will abort at runtime}} 28 vararg(x3); // OK 29 vararg(x4); // expected-error{{cannot pass object of non-trivial type 'X4' through variadic function; call will abort at runtime}} 30 31 vararg(g()); // expected-error{{cannot pass expression of type 'void' to variadic function}} 32 vararg({1, 2, 3}); // expected-error{{cannot pass initializer list to variadic function}} 33 } 34 35 36 namespace PR11131 { 37 struct S; 38 39 S &getS(); 40 41 int f(...); 42 g()43 void g() { 44 (void)sizeof(f(getS())); 45 } 46 } 47