所以,想象一个 vector 类:
template <size_t size>
class Vector<size> {
std::array<float, size> data;
....
}
如果大小为 1,是否可以将模板特化为 float ?像这样的东西:
// The case of a Vector with size 1 should behave like a float
template <>
using class Vector<1> = float;
我也想将其应用于其他类(class)。例如,将列大小为 1 的矩阵视为具有其行大小的 vector 。
在此先感谢您的帮助:)
您可以使用专用模板进行类型选择(请注意,别名模板不允许部分特化,因此无法只使用一个模板):
template<size_t size> struct
VectorType{ using type = VectorImpl<size>; }; // VectorImpl is your current Vector
template<> struct
VectorType<1>{ using type = float; };
// alias template
template<size_t size> using
Vector = typename VectorType<size>::type;
我是一名优秀的程序员,十分优秀!