// RUN: %clang_cc1 -fsyntax-only -verify %s namespace test0 { namespace N { } template struct A { void f(); }; template struct B : A { using A::f; void g() { using namespace N; f(); } }; template struct B; } namespace test1 { template struct Visitor1 { void Visit(struct Object1*); }; template struct Visitor2 { void Visit(struct Object2*); // expected-note {{candidate function}} }; template struct JoinVisitor : Visitor1, Visitor2 { typedef Visitor1 Base1; typedef Visitor2 Base2; void Visit(struct Object1*); // expected-note {{candidate function}} using Base2::Visit; }; class Knot : public JoinVisitor { }; void test() { Knot().Visit((struct Object1*) 0); Knot().Visit((struct Object2*) 0); Knot().Visit((struct Object3*) 0); // expected-error {{no matching member function for call}} } } // PR5847 namespace test2 { namespace ns { void foo(); } template void bar(T* ptr) { using ns::foo; foo(); } template void bar(char *); }