template <typename T, typename S> struct Decl { typedef typename Decl<S,T>::Type Type; }; // case where both types are the same template <typename T> struct Decl<T,T> { typedef T Type; }; template <> struct Decl<int, double> { typedef double Type; }; |