Home | History | Annotate | Download | only in temp.explicit
      1 // RUN: %clang_cc1 -fsyntax-only -verify %s
      2 // expected-no-diagnostics
      3 
      4 template<class T> class Array { /* ... */ };
      5 template<class T> void sort(Array<T>& v) { }
      6 
      7 // instantiate sort(Array<int>&) - template-argument deduced
      8 template void sort<>(Array<int>&);
      9 
     10 template void sort(Array<long>&);
     11 
     12 template<typename T, typename U> void f0(T, U*) { }
     13 
     14 template void f0<int>(int, float*);
     15 template void f0<>(double, float*);
     16 
     17 template<typename T> struct hash { };
     18 struct S {
     19   bool operator==(const S&) const { return false; }
     20 };
     21 
     22 template<typename T> struct Hash_map {
     23   void Method(const T& x) { h(x); }
     24   hash<T> h;
     25 };
     26 
     27 Hash_map<S> *x;
     28 const Hash_map<S> *foo() {
     29   return x;
     30 }
     31 
     32 template<> struct hash<S> {
     33   int operator()(const S& k) const {
     34     return 0;
     35   }
     36 };
     37