implicit-member-functions.cpp revision 3d04336baf091b16e9d8f85b48b82dafd2695874
1// RUN: %clang_cc1 -fsyntax-only -verify %s 2 3struct A { }; 4A::A() { } // expected-error {{definition of implicitly declared constructor}} 5 6struct B { }; 7B::B(const B&) { } // expected-error {{definition of implicitly declared copy constructor}} 8 9struct C { }; 10C& C::operator=(const C&) { return *this; } // expected-error {{definition of implicitly declared copy assignment operator}} 11 12struct D { }; 13D::~D() { } // expected-error {{definition of implicitly declared destructor}} 14 15// Make sure that the special member functions are introduced for 16// name-lookup purposes and overload with user-declared 17// constructors and assignment operators. 18namespace PR6570 { 19 class A { }; 20 21 class B { 22 public: 23 B() {} 24 25 B(const A& a) { 26 operator = (CONST); 27 operator = (a); 28 } 29 30 B& operator = (const A& a) { 31 return *this; 32 } 33 34 void f(const A &a) { 35 B b(a); 36 }; 37 38 static const B CONST; 39 }; 40 41} 42