json.http and crow modified to compile with latest gcc
parent
0b350a027d
commit
fd14259c1f
@ -1,36 +0,0 @@
|
|||||||
#ifndef MEMBER_CHECKER_H
|
|
||||||
#define MEMBER_CHECKER_H
|
|
||||||
|
|
||||||
|
|
||||||
#define DEFINE_MEMBER_CHECKER(member) \
|
|
||||||
template<typename T, typename V = bool> \
|
|
||||||
struct has_ ## member : false_type { }; \
|
|
||||||
\
|
|
||||||
template<typename T> \
|
|
||||||
struct has_ ## member<T, \
|
|
||||||
typename enable_if< \
|
|
||||||
!is_same<decltype(declval<T>().member), void>::value, \
|
|
||||||
bool \
|
|
||||||
>::type \
|
|
||||||
> : true_type { };
|
|
||||||
|
|
||||||
#define HAS_MEMBER(C, member) \
|
|
||||||
has_ ## member<C>::value
|
|
||||||
|
|
||||||
|
|
||||||
// first getter if the member veriable is present, so we return its value
|
|
||||||
// second getter, when the member is not present, so we return empty value, e.g., empty string
|
|
||||||
#define DEFINE_MEMBER_GETTER(member, ret_value) \
|
|
||||||
template<typename T> \
|
|
||||||
typename enable_if<HAS_MEMBER(T, member), ret_value>::type \
|
|
||||||
get_ ## member (T t){ \
|
|
||||||
return t.member; \
|
|
||||||
} \
|
|
||||||
\
|
|
||||||
template<typename T> \
|
|
||||||
typename enable_if<!HAS_MEMBER(T, member), ret_value>::type \
|
|
||||||
get_ ## member (T t){ \
|
|
||||||
return ret_value(); \
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // MEMBER_CHECKER_H
|
|
Loading…
Reference in New Issue