Передача std :: array в качестве аргументов функции шаблона variadic

Я пытаюсь узнать о шаблонах variadic в C ++ 11. У меня есть класс, который в основном является оберткой вокругstd::array, Я хочу иметь возможность передавать функциональные объекты (в идеале лямбды) функции-члену, а затем иметь элементыstd::array передается в качестве параметров объекта функции.

Я использовалstatic_assert чтобы проверить, что число параметров соответствует длине массива, но я не могу придумать, как передать элементы в качестве аргументов.

Вот код

#include 
#include 
#include 
#include 

using namespace std;

template
struct Container {
    template
    Container(Ts&&... vs) : data{{std::forward(vs)...}} {
        static_assert(sizeof...(Ts)==N,"Not enough args supplied!");
    }

    template< typename... Ts>
    void doOperation( std::function&& func )
    {
        static_assert(sizeof...(Ts)==N,"Size of variadic template args does not match array length");

        // how can one call func with the entries
        // of data as the parameters (in a way generic with N)
    }

    std::array data;
};

int main(void)
{
    Container cont(1,2,3);

    double sum = 0.0;
    auto func = [&sum](int x, int y, int z)->void{
        sum += x;
        sum += y;
        sum += z;
    };

    cont.doOperation(std::function(func));

    cout < sum < endl;

    return 0;
}

Ответы на вопрос(2)

Ваш ответ на вопрос