// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s

struct NoDefault {
  NoDefault() = delete; // expected-note {{here}}
  NoDefault(int);
};
struct Explicit { // expected-note 2 {{candidate}} expected-note {{here}}
  explicit Explicit(int);
};
struct NoCopy {
  NoCopy();
  NoCopy(const NoCopy &) = delete; // expected-note {{here}}
};
struct NoMove {
  NoMove();
  NoMove(NoMove &&) = delete; // expected-note {{here}}
};
class Private {
  Private(int); // expected-note {{here}}
public:
  Private();
};
class Friend {
  friend class S;
  Friend(int);
};


class S {
  NoDefault nd1;
  NoDefault nd2 = 42;
  Explicit e1; // expected-note {{here}}
  Explicit e2 = 42; // expected-error {{no viable conversion}}
  NoCopy nc = NoCopy(); // expected-error {{call to deleted}}
  NoMove nm = NoMove(); // expected-error {{call to deleted}}
  Private p = 42; // expected-error {{private constructor}}
  Friend f = 42;

  S() {} // expected-error {{call to deleted constructor of 'NoDefault'}} \
            expected-error {{must explicitly initialize the member 'e1' which does not have a default constructor}}
  S(int) : nd1(42), e1(42) {}
};

// FIXME: test the other forms which use copy-initialization
