Generating a sequence of type T at compile time

c++, c++14, callable

Solution

Why not simply use:

using callable_out_type = std::result_of_t< callable( decltype(N_i, std::declval<T>())...) >;

you could also use a trick borrowed from Columbo's answer:

using callable_out_type =  std::result_of_t< callable(std::tuple_element_t<(N_i, 0), std::tuple<T>>...) >;

or even:

using callable_out_type =  std::result_of_t< callable(std::enable_if_t<(N_i, true), T>...) >;

Problem

I have the following problem: ``` template< typename callable, typename T , size_t... N_i> void foo() { using callable_out_type = std::result_of_t< callable( /* T , ... , T <- sizeof...(N_i) many */ ) >; // ... } ``` I want to get the result type of `callable` which takes `sizeof...(N_i)` many arguments of the type `T` as its input, e.g., `callable(1,2,3)` in case of `T==int` and `sizeof...(N_i)==3`. How can this be implemented? Many thanks in advance.

Original source

Related problems