У меня есть template class
с множеством функций и хочу только выделить некоторые из них, а также добавить переменную-член.template member переменная специализация
Возможно ли это без необходимости переопределения всех функций для специализированного класса?
Что у меня есть:
template<class T> class Vector3
{
union {
T data[3];
struct { T x, y, z; };
};
//a lot of functions
T Length() { ... };
};
Что я хочу сделать:
template<> class Vector3<float>
{
union {
float data[3];
struct { float x, y, z; };
//new union member only for <float>!
__m128 xmm;
};
float Length() {
//special instructions for special case <float>
};
};
В 95% всех функций оставаться точно таким же, я определенно не хочу для их повторной реализации для каждой отдельной специализации. Как я могу это достичь?
Очень interresting подход, но я буду прав, полагая, что я не буду иметь возможность прямого доступа к членам профсоюза, как в моем первом примере? Поэтому мне придется использовать impl.x и impl.y ...? – bricklore
Отредактировано для обсуждения вашей озабоченности по поводу 'impl.x, impl.y' и т. Д. –
Спасибо - это именно то, что я искал! – bricklore