2009-12-16 04:14:24 +08:00
|
|
|
// RUN: %clang_cc1 -fsyntax-only -verify %s
|
2009-11-03 15:25:45 +08:00
|
|
|
// XFAIL: *
|
2009-06-23 23:45:29 +08:00
|
|
|
|
|
|
|
// 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&);
|
|
|
|
}
|