47 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s2 3struct X1 {4 X1();5};6 7struct X2 {8 X2();9 ~X2();10};11 12struct X3 {13 X3(const X3&) = default;14};15 16struct X4 {17 X4(const X4&) = default;18 X4(X4&);19};20 21void vararg(...);22 23void g();24 25void f(X1 x1, X2 x2, X3 x3, X4 x4) {26 vararg(x1); // OK27 vararg(x2); // expected-error{{cannot pass object of non-trivial type 'X2' through variadic function; call will abort at runtime}}28 vararg(x3); // OK29 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 36namespace PR11131 {37 struct S;38 39 S &getS();40 41 int f(...);42 43 void g() {44 (void)sizeof(f(getS()));45 }46}47