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