// RUN: %clang_cc1 -fsyntax-only -verify %s // expected-no-diagnostics template class Array { /* ... */ }; template void sort(Array& v) { } // instantiate sort(Array&) - template-argument deduced template void sort<>(Array&); template void sort(Array&); template void f0(T, U*) { } template void f0(int, float*); template void f0<>(double, float*); template struct hash { }; struct S { bool operator==(const S&) const { return false; } }; template struct Hash_map { void Method(const T& x) { h(x); } hash h; }; Hash_map *x; const Hash_map *foo() { return x; } template<> struct hash { int operator()(const S& k) const { return 0; } };