template<typename Array, std::size_t... Index> decltype(auto) array2tuple_impl(const Array& a, std::index_sequence<Index...>) { return std::make_tuple(a[Index]...); } template<typename T, std::size_t N> decltype(auto) array2tuple(const std::array<T, N>& a) { return array2tuple_impl(a, std::make_index_sequence<N>{}); }
使用:code
std::array<int, 4> a { 1, 2, 3, 4 }; auto t = array2tuple(arr);
這裏用到了C++14的std::index_sequence,std::index_sequence頗有用,它能夠將std::array和std::tuple轉換成序列。get