Home | History | Annotate | Download | only in temp.over.link
      1 // RUN: %clang_cc1 -fsyntax-only -verify %s
      2 
      3 template<typename T> void f0(T) { } // expected-note{{previous}}
      4 template<class U> void f0(U) { } // expected-error{{redefinition}}
      5 
      6 template<int I> void f0() { } // expected-note{{previous}}
      7 template<int> void f0() { } // expected-error{{redefinition}}
      8 
      9 typedef int INT;
     10 
     11 template<template<class T, T Value1, INT> class X>
     12   void f0() { } // expected-note{{previous}}
     13 template<template<typename T, T Value1, int> class>
     14   void f0() { } // expected-error{{redefinition}}
     15 
     16 template<typename T>
     17 struct MetaFun;
     18 
     19 template<typename T>
     20   typename MetaFun<T*>::type f0(const T&) { while (1) {} } // expected-note{{previous}}
     21 template<class U>
     22   typename MetaFun<U*>::type f0(const U&) { while (1) {} } // expected-error{{redefinition}}
     23 
     24 // FIXME: We need canonicalization of expressions for this to work
     25 // template<int> struct A { };
     26 // template<int I> void f0(A<I>) { } // Xpected-note{{previous}}
     27 // template<int J> void f0(A<J>) { } // Xpected-error{{redefinition}}
     28