1 // RUN: %clang_cc1 -fsyntax-only -verify %s
21 template struct B<int>;
25 template <class Derived> struct Visitor1 {
26 void Visit(struct Object1*);
28 template <class Derived> struct Visitor2 {
29 void Visit(struct Object2*); // expected-note {{candidate function}}
32 template <class Derived> struct JoinVisitor
33 : Visitor1<Derived>, Visitor2<Derived> {
34 typedef Visitor1<Derived> Base1;
35 typedef Visitor2<Derived> Base2;
37 void Visit(struct Object1*); // expected-note {{candidate function}}
41 class Knot : JoinVisitor<Knot> {
45 Knot().Visit((struct Object1*) 0);
46 Knot().Visit((struct Object2*) 0);
47 Knot().Visit((struct Object3*) 0); // expected-error {{no matching member function for call}}
57 template <class T> void bar(T* ptr) {
62 template void bar(char *);