00001 #ifndef IS_ARITHMETIC 00002 #define IS_ARITHMETIC 00003 // author: Walter Brown 00004 00005 // ---------------------------------------------------------------------- 00006 // prolog 00007 00008 namespace HepMC { 00009 00014 namespace detail { 00015 00016 00017 // ---------------------------------------------------------------------- 00018 // is_arithmetic<> 00019 00021 template< class T > 00022 struct is_arithmetic 00023 { 00024 static bool const value = false; 00025 }; 00026 00028 template<> 00029 struct is_arithmetic<char> 00030 { static bool const value = true; }; 00031 00033 template<> 00034 struct is_arithmetic<unsigned char> 00035 { static bool const value = true; }; 00036 00038 template<> 00039 struct is_arithmetic<signed char> 00040 { static bool const value = true; }; 00041 00043 template<> 00044 struct is_arithmetic<short> 00045 { static bool const value = true; }; 00046 00048 template<> 00049 struct is_arithmetic<unsigned short> 00050 { static bool const value = true; }; 00051 00053 template<> 00054 struct is_arithmetic<int> 00055 { static bool const value = true; }; 00056 00058 template<> 00059 struct is_arithmetic<unsigned int> 00060 { static bool const value = true; }; 00061 00063 template<> 00064 struct is_arithmetic<long> 00065 { static bool const value = true; }; 00066 00068 template<> 00069 struct is_arithmetic<unsigned long> 00070 { static bool const value = true; }; 00071 00073 template<> 00074 struct is_arithmetic<float> 00075 { static bool const value = true; }; 00076 00078 template<> 00079 struct is_arithmetic<double> 00080 { static bool const value = true; }; 00081 00083 template<> 00084 struct is_arithmetic<long double> 00085 { static bool const value = true; }; 00086 00087 00088 // ---------------------------------------------------------------------- 00089 // epilog 00090 00091 } // namespace detail 00092 } // namespace HepMC 00093 00094 #endif // IS_ARITHMETIC