#define METATYPE_ID_FUNCTION(Type, MetaTypeId, Name) \
case ::qMetaTypeId< Name >(): metaType = MetaTypeIdStruct<MetaTypeId>::Value;
+#define REGISTER_METATYPE_FUNCTION(Type, MetaTypeId, Name) \
+ case qRegisterMetaType< Name >(): metaType = RegisterMetaTypeStruct<MetaTypeId>::Value;
+
template<int>
struct MetaTypeIdStruct
{
};
+template<int>
+struct RegisterMetaTypeStruct
+{
+};
+
#define METATYPE_ID_STRUCT(Type, MetaTypeId, Name) \
template<> \
struct MetaTypeIdStruct< ::qMetaTypeId< Name >()> \
enum { Value = ::qMetaTypeId< Name >() }; \
};
+#define REGISTER_METATYPE_STRUCT(Type, MetaTypeId, Name) \
+template<> \
+struct RegisterMetaTypeStruct<qRegisterMetaType< Name >()> \
+{ \
+ enum { Value = qRegisterMetaType< Name >() }; \
+};
+
#if defined(Q_COMPILER_CONSTEXPR)
QT_FOR_EACH_STATIC_TYPE(METATYPE_ID_STRUCT)
+QT_FOR_EACH_STATIC_TYPE(REGISTER_METATYPE_STRUCT)
template<int i = ::qMetaTypeId<int>()>
struct MetaTypeIdStructDefaultTemplateValue
{
enum { Value };
};
+
+template<int i = qRegisterMetaType<int>()>
+struct RegisterMetaTypeStructDefaultTemplateValue
+{
+ enum { Value };
+};
#endif
void tst_QMetaType::constexprMetaTypeIds()
#endif
default:;
}
+
+ switch (id) {
+#if defined(Q_COMPILER_CONSTEXPR)
+ QT_FOR_EACH_STATIC_TYPE(REGISTER_METATYPE_FUNCTION)
+ metaType = RegisterMetaTypeStructDefaultTemplateValue<>::Value;
+#endif
+ default:;
+ }
Q_UNUSED(metaType);
}