我有一个关于特化的问题。我想用特定类型模板特化来做一个结构。但是,问题是当我试图特化这个结构时,结构成员没有被声明。
我有一个结构体
template<typename T>
struct v4
{
union
{
struct
{
T x, y, z, w;
};
struct
{
T r, g, b, a;
};
T E[4];
};
v4() = default;
// A lot more members, etc
// ....
}
我想专门化这个结构或者用类似这样的东西来得到我需要的行为:
template<>
struct v4 : v4<u16>
{
vech4() = default;
vech4(const v4<r32>& V)
{
x = EncodeHalf(V.x);
y = EncodeHalf(V.y);
z = EncodeHalf(V.z);
w = EncodeHalf(V.w);
}
};
如何正确地指定模板专门化并获得所需的行为?
1条答案
按热度按时间u91tlkcl1#
专门化模板时,您将用新模板替换常规模板定义。看起来您要添加而不是替换。如果是这样,您应该继承而不是专门化。
你应该编个新名字:
新的
struct
不再是一个模板,但是它继承了一个模板示例化和其中的所有内容。