我有一个模板化的结构,其成员类型取决于专业化:
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_if
和std::is_pointer
的组合,但似乎无法使其正常工作。有人可以告诉我它是怎么做的吗?