diff options
author | Marc Glisse <marc.glisse@inria.fr> | 2012-07-28 21:46:42 +0200 |
---|---|---|
committer | Marc Glisse <marc.glisse@inria.fr> | 2012-07-28 21:46:42 +0200 |
commit | e6926618985a756d4e7f00afcb842a161648fc41 (patch) | |
tree | bd98cfaa128dc10f19238ca29065b690c18893a5 /gmpxx.h | |
parent | ec2771c7ec87413b667f3b8889e74ffb5a90ffe3 (diff) | |
download | gmp-e6926618985a756d4e7f00afcb842a161648fc41.tar.gz |
Specialize std::common_type for expressions with builtin types.
Diffstat (limited to 'gmpxx.h')
-rw-r--r-- | gmpxx.h | 25 |
1 files changed, 25 insertions, 0 deletions
@@ -1365,6 +1365,31 @@ namespace std { { typedef __gmp_expr<T, U> type; }; + +#define __GMPXX_DECLARE_COMMON_TYPE(typ) \ + template <class T, class U> \ + struct common_type <__gmp_expr<T, U>, typ > \ + { \ + typedef __gmp_expr<T, T> type; \ + }; \ + \ + template <class T, class U> \ + struct common_type <typ, __gmp_expr<T, U> > \ + { \ + typedef __gmp_expr<T, T> type; \ + } + + __GMPXX_DECLARE_COMMON_TYPE(signed char); + __GMPXX_DECLARE_COMMON_TYPE(unsigned char); + __GMPXX_DECLARE_COMMON_TYPE(signed int); + __GMPXX_DECLARE_COMMON_TYPE(unsigned int); + __GMPXX_DECLARE_COMMON_TYPE(signed short int); + __GMPXX_DECLARE_COMMON_TYPE(unsigned short int); + __GMPXX_DECLARE_COMMON_TYPE(signed long int); + __GMPXX_DECLARE_COMMON_TYPE(unsigned long int); + __GMPXX_DECLARE_COMMON_TYPE(float); + __GMPXX_DECLARE_COMMON_TYPE(double); +#undef __GMPXX_DECLARE_COMMON_TYPE } #endif |