首页 > 解决方案 > 将数组加在一起的索引序列

问题描述

我一直在尝试使用std::index_sequence,我一直在尝试让这段代码起作用,有什么帮助或指示吗?

template <typename tty,
          std::size_t ssz,
          typename is = std::make_index_sequence<std::min(sz, ssz)>>    
auto operator + (ss::array_helper<tty, ssz> right) const
{
    auto ret = *this;

    [ = ] ( auto s ) {
        [] ( ty& l , tty& r ) { l += r; } 
            ( ret [ is ] , right [ is ] )...;
    } ( is { } );

    return ret;
};

标签: c++c++20

解决方案


的用法std::index_sequence是将其扩展为可变形式:

[&] template <std::size_t ... Is> (std::index_sequence<Is...>)
{
    ((res[Is] += rhs[Is]), ...);
} (std::make_index_sequence<std::min(sz, ssz)>{});

推荐阅读