forked from 0ad/0ad
Fix GCC build errors ("explicit template specialization cannot have a storage class",
"need 'typename' before 'static_assert_<...>::type' because 'static_assert_<...>' is a dependent scope"). Fixes #767. This was SVN commit r9167.
This commit is contained in:
parent
99a1049ef9
commit
d3ba9a24d3
@ -135,6 +135,14 @@ template<> struct static_assert_<true>
|
||||
typedef int type;
|
||||
};
|
||||
|
||||
/**
|
||||
* @copydoc cassert(expr)
|
||||
*
|
||||
* This version must be used if expr uses a dependent type (e.g. depends on
|
||||
* a template parameter).
|
||||
**/
|
||||
#define cassert_dependent(expr) typedef typename static_assert_<(expr)>::type UID__
|
||||
|
||||
/**
|
||||
* @copydoc cassert(expr)
|
||||
*
|
||||
|
@ -435,7 +435,7 @@ static inline const char* EnumeratorFromValue(Enum UNUSED(value))
|
||||
#define ENUM(enumerator, value) case value: return #enumerator;
|
||||
#define ENUMERATION(name)\
|
||||
template<>\
|
||||
static inline const char* EnumeratorFromValue<name>(name value)\
|
||||
inline const char* EnumeratorFromValue<name>(name value)\
|
||||
{\
|
||||
switch(value.value)\
|
||||
{\
|
||||
@ -464,7 +464,7 @@ public:
|
||||
return;
|
||||
|
||||
static u64 zero;
|
||||
cassert(sizeof(value) <= sizeof(zero));
|
||||
cassert_dependent(sizeof(value) <= sizeof(zero));
|
||||
if((flags & F_ENUM) == 0 && memcmp(&value, &zero, sizeof(value)) == 0)
|
||||
return;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user