float> { typedef float type; };       template <> struct promote_args_0<double, double>{ typedef double type; };       template <> struct promote_args_0<long double, long double> { typedef long double type; };       template <> struct promote_args_0<int, int> {  typedef double type; };       template <> struct promote_args_0<int, float> {  typedef double type; };       template <> struct promote_args_0<float, int> {  typedef double type; };       template <> struct promote_args_0<int, double> {  typedef double type; };       template <> struct promote_args_0<double, int> {  typedef double type; };       template <> struct promote_args_0<int, long double> {  typedef long double type; };       template <> struct promote_args_0<long double, 