brintos

brintos / llvm-project-archived public Read only

0
0
Text · 885 B · fbb685c Raw
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