我上课了
template <typename T> struct Dispatch;
Run Code Online (Sandbox Code Playgroud)
用于调用特定于类型的函数.例如,假设我有调度员喜欢
template <> struct Dispatch <MyClass> {
static void Apply (void* a, MyClass& m)
{
::memcpy (a, &m, sizeof (m));
}
};
Run Code Online (Sandbox Code Playgroud)
现在我有一堆类,我有一个类型特征,ArrayTypes.我想做的事情如下:
template <> struct Dispatch <enable_if<IsArrayType>>
{
template <typename ArrayType>
static void Apply (void* a, ArrayType& m)
{
::memcpy (a, &m, ArrayTypeTraits<ArrayType>::GetSize (m));
}
};
Run Code Online (Sandbox Code Playgroud)
这可能吗?