1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
#ifndef GENERS_IOISNUMBER_HH_
#define GENERS_IOISNUMBER_HH_
namespace gs {
template <class T>
struct IOIsNumber {
enum { value = 0 };
};
} // namespace gs
#define gs_declare_type_as_number(T) /**/ \
namespace gs { \
template <> \
struct IOIsNumber<T> { \
enum { value = 1 }; \
}; \
template <> \
struct IOIsNumber<T const> { \
enum { value = 1 }; \
}; \
template <> \
struct IOIsNumber<T volatile> { \
enum { value = 1 }; \
}; \
template <> \
struct IOIsNumber<T const volatile> { \
enum { value = 1 }; \
}; \
}
gs_declare_type_as_number(float) gs_declare_type_as_number(double) gs_declare_type_as_number(long double)
gs_declare_type_as_number(int) gs_declare_type_as_number(unsigned) gs_declare_type_as_number(long)
gs_declare_type_as_number(long long) gs_declare_type_as_number(unsigned long)
gs_declare_type_as_number(unsigned long long) gs_declare_type_as_number(short)
gs_declare_type_as_number(unsigned short) gs_declare_type_as_number(char)
gs_declare_type_as_number(unsigned char) gs_declare_type_as_number(signed char)
#endif // GENERS_IOISNUMBER_HH_
|