In this simplified code :
template <int... vars>
struct Compile_Time_Array_Indexes
{
static std::array < int, sizeof...(vars)> indexes;//automatically fill it base on sizeof...(vars)
};
template <int ... vars>
struct Compile_Time_Array :public Compile_Time_Array_Indexes<vars...>
{
};
I want to automatically fill indexes
base on the vars...
size .
Example :
Compile_Time_Array <1,3,5,2> arr1;//indexes --> [0,1,2,3]
Compile_Time_Array <8,5> arr2; // indexes --> [0,1]
Any idea ?
The following definition apparently works with GCC-4.9 and Clang-3.5:
template <typename Type, Type ...Indices>
auto make_index_array(std::integer_sequence<Type, Indices...>)
-> std::array<Type, sizeof...(Indices)>
{
return std::array<Type, sizeof...(Indices)>{Indices...};
}
template <int... vars>
std::array<int, sizeof...(vars)>
Compile_Time_Array_Indexes<vars...>::indexes
= make_index_array<int>(std::make_integer_sequence<int, sizeof...(vars)>{});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With