使用SFINAE的C ++构造函数专业化

时间:2018-11-23 09:07:07

标签: c++ templates constructor sfinae template-specialization

我有一个模板化的结构,其成员类型取决于专业化:

template<typename T>
struct Base
{
    typedef T VT[4];
}

template<>
struct Base<float>
{
    typedef ___m128 VT;
} // And other similar specializations for int, uint etc...

template<typename T>
struct A
{
     typename A<T>::VT data;
}

我想专门针对指针和非指针类型的副本构造函数:

// Non-pointer
A::A(const A & a) : data(a.data) { }

// Pointer
A::A(const A & a) { memcpy(data, a.data, sizeof(data)); }

我尝试使用std::enable_ifstd::is_pointer的组合,但似乎无法使其正常工作。有人可以告诉我它是怎么做的吗?

0 个答案:

没有答案