У меня есть шаблонная структура, тип члена которой зависит от специализации:
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
, но я не могу заставить ее работать.Может кто-нибудь показать мне, как это делается?