--- libgig/trunk/src/Serialization.h 2017/05/09 16:10:36 3166 +++ libgig/trunk/src/Serialization.h 2017/05/09 16:32:07 3167 @@ -37,6 +37,9 @@ #include #if __cplusplus < 201103L # include +# define LIBGIG_IS_CLASS(type) std::tr1::__is_union_or_class::value //NOTE: without compiler support we cannot distinguish union from class +#else +# define LIBGIG_IS_CLASS(type) __is_class(type) #endif /** @brief Serialization / deserialization framework. @@ -177,7 +180,7 @@ template struct Resolver { static UID resolve(const T& obj) { - return (UID) { (ID) &obj, sizeof(obj) }; + return UID { (ID) &obj, sizeof(obj) }; } }; @@ -185,7 +188,7 @@ template struct Resolver { static UID resolve(const T* const & obj) { - return (UID) { (ID) obj, sizeof(*obj) }; + return UID { (ID) obj, sizeof(*obj) }; } }; }; @@ -637,8 +640,8 @@ class UIDChainResolver { public: UIDChainResolver(const T*& data) { - m_uid.push_back((UID) { &data, sizeof(data) }); - m_uid.push_back((UID) { data, sizeof(*data) }); + m_uid.push_back(UID { &data, sizeof(data) }); + m_uid.push_back(UID { data, sizeof(*data) }); } operator UIDChain() const { return m_uid; } @@ -678,7 +681,7 @@ // Automatically handles recursion for class/struct types, while ignoring all primitive types. template - struct SerializationRecursion : SerializationRecursionImpl { + struct SerializationRecursion : SerializationRecursionImpl { }; class ObjectPool : public std::map {