traits.h
Go to the documentation of this file.
00001 #ifndef TRAITS_H_62B23520_7C8E_11DE_8A39_0800200C9A66
00002 #define TRAITS_H_62B23520_7C8E_11DE_8A39_0800200C9A66
00003 
00004 #if defined(_MSC_VER) || (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4
00005 #pragma once
00006 #endif
00007 
00008 
00009 namespace YAML_PM
00010 {
00011         template <typename>
00012         struct is_numeric { enum { value = false }; };
00013 
00014         template <> struct is_numeric <char> { enum { value = true }; };
00015         template <> struct is_numeric <unsigned char> { enum { value = true }; };
00016         template <> struct is_numeric <int> { enum { value = true }; };
00017         template <> struct is_numeric <unsigned int> { enum { value = true }; };
00018         template <> struct is_numeric <long int> { enum { value = true }; };
00019         template <> struct is_numeric <unsigned long int> { enum { value = true }; };
00020         template <> struct is_numeric <short int> { enum { value = true }; };
00021         template <> struct is_numeric <unsigned short int> { enum { value = true }; };
00022 #if defined(_MSC_VER) && (_MSC_VER < 1310)
00023         template <> struct is_numeric <__int64> { enum { value = true }; };
00024         template <> struct is_numeric <unsigned __int64> { enum { value = true }; };
00025 #else
00026         template <> struct is_numeric <long long> { enum { value = true }; };
00027         template <> struct is_numeric <unsigned long long> { enum { value = true }; };
00028 #endif
00029         template <> struct is_numeric <float> { enum { value = true }; };
00030         template <> struct is_numeric <double> { enum { value = true }; };
00031         template <> struct is_numeric <long double> { enum { value = true }; };
00032 
00033         template <bool, class T = void>
00034         struct enable_if_c {
00035           typedef T type;
00036         };
00037 
00038         template <class T>
00039         struct enable_if_c<false, T> {};
00040 
00041         template <class Cond, class T = void>
00042         struct enable_if : public enable_if_c<Cond::value, T> {};
00043 
00044         template <bool, class T = void>
00045         struct disable_if_c {
00046           typedef T type;
00047         };
00048 
00049         template <class T>
00050         struct disable_if_c<true, T> {};
00051 
00052         template <class Cond, class T = void>
00053         struct disable_if : public disable_if_c<Cond::value, T> {};
00054 }
00055 
00056 #endif // TRAITS_H_62B23520_7C8E_11DE_8A39_0800200C9A66
00057 


upstream_src
Author(s):
autogenerated on Mon Oct 6 2014 10:27:42