template <typename T, typename S> struct Decl { }; template <> struct Decl<int, int> { typedef int Type; }; template <> struct Decl<double, int> { typedef double Type; }; template <> struct Decl<int, double> { typedef double Type; }; template <> struct Decl<double, double> { typedef double Type; }; |