BRE12
traits.h
1 #ifndef TRAITS_H_62B23520_7C8E_11DE_8A39_0800200C9A66
2 #define TRAITS_H_62B23520_7C8E_11DE_8A39_0800200C9A66
3 
4 #if defined(_MSC_VER) || \
5  (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \
6  (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4
7 #pragma once
8 #endif
9 
10 namespace YAML {
11 template <typename>
12 struct is_numeric {
13  enum { value = false };
14 };
15 
16 template <>
17 struct is_numeric<char> {
18  enum { value = true };
19 };
20 template <>
21 struct is_numeric<unsigned char> {
22  enum { value = true };
23 };
24 template <>
25 struct is_numeric<int> {
26  enum { value = true };
27 };
28 template <>
29 struct is_numeric<unsigned int> {
30  enum { value = true };
31 };
32 template <>
33 struct is_numeric<long int> {
34  enum { value = true };
35 };
36 template <>
37 struct is_numeric<unsigned long int> {
38  enum { value = true };
39 };
40 template <>
41 struct is_numeric<short int> {
42  enum { value = true };
43 };
44 template <>
45 struct is_numeric<unsigned short int> {
46  enum { value = true };
47 };
48 #if defined(_MSC_VER) && (_MSC_VER < 1310)
49 template <>
50 struct is_numeric<__int64> {
51  enum { value = true };
52 };
53 template <>
54 struct is_numeric<unsigned __int64> {
55  enum { value = true };
56 };
57 #else
58 template <>
59 struct is_numeric<long long> {
60  enum { value = true };
61 };
62 template <>
63 struct is_numeric<unsigned long long> {
64  enum { value = true };
65 };
66 #endif
67 template <>
68 struct is_numeric<float> {
69  enum { value = true };
70 };
71 template <>
72 struct is_numeric<double> {
73  enum { value = true };
74 };
75 template <>
76 struct is_numeric<long double> {
77  enum { value = true };
78 };
79 
80 template <bool, class T = void>
81 struct enable_if_c {
82  typedef T type;
83 };
84 
85 template <class T>
86 struct enable_if_c<false, T> {};
87 
88 template <class Cond, class T = void>
89 struct enable_if : public enable_if_c<Cond::value, T> {};
90 
91 template <bool, class T = void>
92 struct disable_if_c {
93  typedef T type;
94 };
95 
96 template <class T>
97 struct disable_if_c<true, T> {};
98 
99 template <class Cond, class T = void>
100 struct disable_if : public disable_if_c<Cond::value, T> {};
101 }
102 
103 #endif // TRAITS_H_62B23520_7C8E_11DE_8A39_0800200C9A66
Definition: traits.h:100
Definition: traits.h:92
Definition: traits.h:81
Definition: traits.h:12
Definition: DrawableObjectLoader.h:10
Definition: traits.h:89