// RUN: clang-cc -fsyntax-only -verify %s 

int x(1);
int (x2)(1);

void f() {
  int x(1);
  int (x2)(1);
  for (int x(1);;) {}
}

class Y { 
  explicit Y(float);
};

class X { // expected-note{{candidate function}}
public:
  explicit X(int); // expected-note{{candidate function}}
  X(float, float, float); // expected-note{{candidate function}}
  X(float, Y); // expected-note{{candidate function}}
};

class Z {
public:
  Z(int);
};

void g() {
  X x1(5);
  X x2(1.0, 3, 4.2);
  X x3(1.0, 1.0); // expected-error{{no matching constructor for initialization of 'x3'; candidates are:}}
  Y y(1.0);
  X x4(3.14, y);

  Z z; // expected-error{{no matching constructor for initialization of 'z'}}
}
