首页 > 解决方案 > 参数包和 std::array

问题描述

我相信这是以前在这里问过的,但我可能是错的。是否可以参数包装一个std::array

    template < typename _Ty , typename... _Rest > requires _sqrable_variadic_operation < _Ty , _Rest... >
        auto accumulated_sqr ( _Ty n , _Rest... q ) { return sqrof ( n , q... ); };
        // Element container of size _Sz and type of _Ty.
        std::array < _Ty , _Sz > m_Elems;
    public:
        . . .
        auto length ( void ){
            return accumulated_sqr ( m_Elems  );
        };

标签: c++templatesvariadic-templatesvariadic-functionsc++20

解决方案


std::array支持类似元组的接口,这意味着您可以使用std::apply它来将其元素提取到可调用对象的参数列表中:

auto length() const
{
    return std::apply([](auto&&... qs) { return accumulated_sqr(decltype(qs)(qs)...); }, m_Elems);
}

演示


推荐阅读