小编kos*_*ude的帖子

如何有效地重用专门的模板结构中的代码?

我正在为数学库创建自己的向量结构。

目前,我会创建类似于这样的结构:

template <unsigned int size, typename T>
struct vector {
    // array of elements
    T elements[size];

    // ...
};
Run Code Online (Sandbox Code Playgroud)

然而,数学库的主要用例将导致主要使用 2 维、3 维和 4 维向量(通常为vec2vec3vec4)。因此,一个有用的功能是能够在可能的情况下从向量访问 x、y、z 和 w 值。然而,这也存在一些问题。

x、和成员需要是、等的引用变量。这意味着,如果向量的元素少于 4 个,则某些引用将不会被初始化yzwelements[0]elements[1]

当然,这可以通过专门的模板来实现,这就是我目前正在做的:

template <unsigned int size, typename T>
struct vector {
    // ...
}

template <typename T>
struct vector<2, T> {
    // same as with before, except with references to X and …
Run Code Online (Sandbox Code Playgroud)

c++ templates

4
推荐指数
1
解决办法
260
查看次数

标签 统计

c++ ×1

templates ×1