forked from OSchip/llvm-project
33 lines
668 B
C++
33 lines
668 B
C++
|
// RUN: clang-cc -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&);
|
||
|
}
|