Home > Enterprise >  How to fill tuple with result of calculation from template arguments parameter packs?
How to fill tuple with result of calculation from template arguments parameter packs?

Time:09-08

I want to do some calculations on my template arguments and insert them into a tuple and return them. I cannot seem to get the syntax right though. Is it possible?

Godbolt link

#include <tuple>

template <typename TupleT, int ...values>
auto create_tuple() {
    // Fold expressions does not seem to work
    // return TupleT{((values   1) , ...)};

    // This does not work either
    // return TupleT{(values   1) , ...};

    // Expected result
    // return TupleT{1   1, 1   2}

}

int main() {
    auto t = create_tuple<std::tuple<int, int>, 1, 2>(); // Usage, cannot be changed
}

CodePudding user response:

This is just an ordinary parameter pack that gets passed to a constructor.

return TupleT{(values   1)...};

Live demo

CodePudding user response:

you could also use std::make_tuple(...), I find it expressive and clean:

return std::make_tuple((values   1)...);
  • Related