小编Met*_*ead的帖子

静态循环

我正在编写模板化的短矢量和小矩阵类,它们不限于具有2-3-4个元素,但可以具有任意数量的元素.

template <typename T, size_t N>
class ShortVector
{
public:

    ...

    template <size_t I> T& get() { return m_data[I]; }
    template <size_t I> const T& get() const { return m_data[I]; }

private:

    T m_data[N];
};
Run Code Online (Sandbox Code Playgroud)

我希望访问接口是静态的,这样我就可以专门使用内置的向量寄存器来支持类的大小.(可能它们是AVX,C++ AMP或OpenCL向量.)问题是为这个类编写所有理想的运算符(一元 - ,+, - ,*,/,点,长度......)需要很多模板递归,我甚至没有实现矩阵向量和矩阵 - 矩阵乘法,我将需要嵌套递归.

现在我有非成员朋友操作符和私有成员类,具有各种静态函数,如

template <size_t I, typename T1, typename T2> struct Helpers
{
    static void add(ShortVector& dst, const ShortVector<T1, N>& lhs, const ShortVector<T2, N>& rhs)
    {
        dst.get<I>() = lhs.get<I>() + rhs.get<I>();
        Helpers<I - 1, T1, T2>::add(dst, lhs, rhs);
    } …
Run Code Online (Sandbox Code Playgroud)

c++ boost stl c++11 c++-amp

3
推荐指数
1
解决办法
531
查看次数

STL容器的constexpression下标运算符

constexpr const_reference at( size_type pos ) const;
Run Code Online (Sandbox Code Playgroud)

STL容器访问器的这种重载如何与非constexpr参数一起使用?这种过载的经典用例是什么?

c++ stl constexpr c++14

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

标签 统计

c++ ×2

stl ×2

boost ×1

c++-amp ×1

c++11 ×1

c++14 ×1

constexpr ×1