У меня есть класс
template <typename T> struct Dispatch;
, который используется для вызова функции, специфичной для типа.Например, предположим, что у меня есть диспетчеры типа
template <> struct Dispatch <MyClass> {
static void Apply (void* a, MyClass& m)
{
::memcpy (a, &m, sizeof (m));
}
};
. Теперь у меня есть группа классов, для которых у меня есть черта типа ArrayTypes
.Я хотел бы сделать что-то вроде:
template <> struct Dispatch <enable_if<IsArrayType>>
{
template <typename ArrayType>
static void Apply (void* a, ArrayType& m)
{
::memcpy (a, &m, ArrayTypeTraits<ArrayType>::GetSize (m));
}
};
Возможно ли это?