小编Str*_*wie的帖子

如何根据数组的大小启用/禁用函数?

我对 TMP 还很陌生,所以如果这是一个措辞不好的问题,请原谅我。

我正在尝试创建一个非常通用的数学 Vector 类来存储任意数量的组件,但默认为 3 并使用 float 作为其基本表示形式。因此,如果您默认构造这些向量之一,它将保存(0.0f,0.0f,0.0f)

这些值本身存储在 a 中std::array,我想创建访问器函数以方便使用。我目前有这个:

std::array<Type,SIZE> e;
Type x() const {return e.at(0);};
Type y() const {return e.at(1);};
Type z() const {return e.at(2);};
Run Code Online (Sandbox Code Playgroud)

我现在想做的是为第四个组件设置一个,w但只有当该数组的大小 >= 4 时才启用它。所以像这样:

template<class Type, std::enable_if<.......>>
Type w() const {return e.at(3);};
Run Code Online (Sandbox Code Playgroud)

这只是我认为它应该是什么样子的一个模糊的想法。我知道concept存在,但我也在努力为这种情况写一个。

c++ template-meta-programming c++-concepts c++20

4
推荐指数
2
解决办法
182
查看次数