// RUN: %clang_cc1 -fsyntax-only -verify %s
// XFAIL: *
// Note: we fail this test because we perform template instantiation
// at the end of the translation unit, so argument-dependent lookup
// finds functions that occur after the point of instantiation. Note
// that GCC fails this test; EDG passes the test in strict mode, but
// not in relaxed mode.
namespace N {
struct A { };
struct B : public A { };
int& f0(A&);
}
template<typename T, typename Result>
struct X0 {
void test_f0(T t) {
Result r = f0(t);
};
};
void test_f0() {
X0<N::A, int&> xA;
xA.test_f0(N::A());
X0<N::B, int&> xB;
xB.test_f0(N::B());
}
namespace N {
char& f0(B&);
}