summaryrefslogtreecommitdiff
path: root/clang/test/CXX/temp/temp.res/temp.dep.res/temp.point/p1.cpp
blob: 75580d245cfc7296ff9679324e7bf873384ba7cf (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// 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&);
}