提供特征类的类型的模板特化

Ant*_*eru 5 c++ templates

我上课了

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)

这可能吗?

Kor*_*icz 4

使用 boost enable_if

如果 boost 不可用,请查看enable_if 惯用语