Thinking about the solution of std :: initializer list from an existing std :: array without listing each element , I developed a similar mechanism like bolov , but did not create an object, but rather just a list of initializers. I was surprised that my solution did not work, and I could not understand why.
#include <initializer_list> #include <iostream> #include <array> template<typename T, std::size_t N, std::size_t... Is> std::initializer_list<T> array_to_init_list_helper(std::array<T, N> arr, std::index_sequence<Is...>) { return {arr[Is]...}; } template<typename T, std::size_t N> std::initializer_list<T> array_to_init_list(std::array<T, N> arr) { return array_to_init_list_helper(arr, std::make_index_sequence<N>{}); } int main() { std::array<int, 5> arr{1, 2, 3, 4, 5}; auto init_list = array_to_init_list(arr); for (auto val : init_list) std::cout << val << " "; }
I am getting random values while I would expect to get arr values.
c ++ c ++ 11 initializer-list
Zereges
source share