// RUN: %clang_cc1 -std=c++11 %s -verify
// expected-no-diagnostics

// C++98 [class.copy]p5 / C++11 [class.copy]p8.

// The implicitly-declared copy constructor for a class X will have the form
//   X::X(const X&)
// if [every direct subobject] has a copy constructor whose first parameter is
// of type 'const volatile[opt] T &'. Otherwise, it will have the form
//   X::X(X&)

struct ConstCopy {
  ConstCopy(const ConstCopy &);
};

struct NonConstCopy {
  NonConstCopy(NonConstCopy &);
};

struct DeletedConstCopy {
  DeletedConstCopy(const DeletedConstCopy &) = delete;
};

struct DeletedNonConstCopy {
  DeletedNonConstCopy(DeletedNonConstCopy &) = delete;
};

struct ImplicitlyDeletedConstCopy {
  ImplicitlyDeletedConstCopy(ImplicitlyDeletedConstCopy &&);
};


struct A : ConstCopy {};
struct B : NonConstCopy { ConstCopy a; };
struct C : ConstCopy { NonConstCopy a; };
struct D : DeletedConstCopy {};
struct E : DeletedNonConstCopy {};
struct F { ImplicitlyDeletedConstCopy a; };
struct G : virtual B {};

struct Test {
  friend A::A(const A &);
  friend B::B(B &);
  friend C::C(C &);
  friend D::D(const D &);
  friend E::E(E &);
  constexpr friend F::F(const F &);
  friend G::G(G &);
};
