Приветствую!
Очень хочется посмотреть, во что превращаются шаблоны при компиляции.
Как это можно увидеть?
P.S. шаблоны сложные, для примера:
template<typename T>
struct QVariantValueHelper : TreatAsQObjectBeforeMetaType<QVariantValueHelper<T>, T, const QVariant &, T>
{
static T metaType(const QVariant &v)
{
}
}
template <typename Derived, typename T, typename Argument, typename ReturnType, bool = IsPointerToTypeDerivedFromQObject<T>::Value>
struct TreatAsQObjectBeforeMetaType : ObjectInvoker<Derived, Argument, ReturnType>
{
};
template <typename Derived, typename T, typename Argument, typename ReturnType>
struct TreatAsQObjectBeforeMetaType<Derived, T, Argument, ReturnType, false> : MetaTypeInvoker<Derived, Argument, ReturnType>
{
};
template <typename Derived, typename Argument, typename ReturnType>
struct ObjectInvoker
{
static ReturnType invoke(Argument a)
{
return Derived::object(a);
}
};
template <typename Derived, typename Argument, typename ReturnType>
struct MetaTypeInvoker
{
static ReturnType invoke(Argument a)
{
return Derived::metaType(a);
}
};
Что вообще нужно - задать специализацию для metaType() и понять во что разворачивается.