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