gpt4 book ai didi

c++ - 特化一个模板类,使其在一种情况下表现得像一个 float

转载 作者:太空宇宙 更新时间:2023-11-03 10:23:54 25 4
gpt4 key购买 nike

所以,想象一个 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;

关于c++ - 特化一个模板类,使其在一种情况下表现得像一个 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48448928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com