template struct Decl { }; // case where both types are the same template struct Decl { typedef T Type; }; template <> struct Decl { typedef double Type; }; template <> struct Decl { typedef double Type; };