// RUN: %clang_cc1 -fsyntax-only -verify %s

// PR5061
namespace a {
  template <typename T> class C {};
}
namespace b {
  template<typename T> void f0(a::C<T> &a0) { }
}


namespace test1 {
  int a = 0;
  template <class T> class Base { };
  template <class T> class Derived : public Base<T> {
    int foo() {
      return test1::a;
    }
  };
}

namespace test2 {
  class Impl {
  public:
    int foo();
  };
  template <class T> class Magic : public Impl {
    int foo() {
      return Impl::foo();
    }
  };
}

namespace PR6063 {
  template <typename T> void f(T, T);
  
  namespace detail 
  {
    using PR6063::f;
  }
  
  template <typename T>
  void g(T a, T b)
  {
    detail::f(a, b);
  }
}

namespace PR12291 {
  template <typename T>
  class Outer2 {
    template <typename V>
    template <typename W>
    class Outer2<V>::Inner; // expected-error{{nested name specifier 'Outer2<V>::' for declaration does not refer into a class, class template or class template partial specialization}}
  };
}
