llvm-project/clang/test/SemaCXX/converting-constructor.cpp
Douglas Gregor e254f90d94 Initial implementation of argument dependent lookup (a.k.a. ADL,
a.k.a. Koenig lookup) in C++. Most of the pieces are in place, but for
two:

  - In an unqualified call g(x), even if the name does not refer to
    anything in the current scope, we can still find functions named
    "g" based on ADL. We don't yet have this ability.
  - ADL will need updating for friend functions and templates.

llvm-svn: 63692
2009-02-04 00:32:51 +00:00

41 lines
659 B
C++

// RUN: clang -fsyntax-only -verify %s
class Z { };
class Y {
public:
Y(const Z&);
};
class X {
public:
X(int);
X(const Y&);
};
void f(X); // expected-note{{candidate function}}
void g(short s, Y y, Z z) {
f(s);
f(1.0f);
f(y);
f(z); // expected-error{{no matching function}}
}
class FromShort {
public:
FromShort(short s);
};
class FromShortExplicitly {
public:
explicit FromShortExplicitly(short s);
};
void explicit_constructor(short s) {
FromShort fs1(s);
FromShort fs2 = s;
FromShortExplicitly fse1(s);
FromShortExplicitly fse2 = s; // expected-error{{error: cannot initialize 'fse2' with an lvalue of type 'short'}}
}