将std::array转换成std::tuple

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>{});
}

使用:

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转换成序列。

posted @ 2016-10-13 10:41  chxuan  阅读(811)  评论(0编辑  收藏  举报