60 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -verify %s2 3struct S {4 S (S); // expected-error {{copy constructor must pass its first argument by reference}}5};6 7S f();8 9void g() { 10 S a( f() );11}12 13class foo {14 foo(foo&, int); // expected-note {{previous}}15 foo(int); // expected-note {{previous}}16 foo(const foo&); // expected-note {{previous}}17};18 19foo::foo(foo&, int = 0) { } // expected-error {{makes this constructor a copy constructor}}20foo::foo(int = 0) { } // expected-error {{makes this constructor a default constructor}}21foo::foo(const foo& = 0) { } //expected-error {{makes this constructor a default constructor}}22 23namespace PR6064 {24 struct A {25 A() { }26 inline A(A&, int); // expected-note {{previous}}27 };28 29 A::A(A&, int = 0) { } // expected-error {{makes this constructor a copy constructor}}30 31 void f() {32 A const a;33 A b(a);34 }35}36 37namespace PR10618 {38 struct A {39 A(int, int, int); // expected-note {{previous}}40 };41 A::A(int a = 0, // expected-error {{makes this constructor a default constructor}}42 int b = 0,43 int c = 0) {}44 45 struct B {46 B(int);47 B(const B&, int); // expected-note {{previous}}48 };49 B::B(const B& = B(0), // expected-error {{makes this constructor a default constructor}}50 int = 0) {51 }52 53 struct C {54 C(const C&, int); // expected-note {{previous}}55 };56 C::C(const C&,57 int = 0) { // expected-error {{makes this constructor a copy constructor}}58 }59}60