From 074645d82efb7aea5598e15294dbce74534470f3 Mon Sep 17 00:00:00 2001 From: Megvii Engine Team Date: Tue, 21 Jul 2020 20:11:39 +0800 Subject: [PATCH] feat(core): add array_skip GitOrigin-RevId: ae0d12fbb8325e06b23be6cf7985897988e44c50 --- src/core/include/megbrain/utils/metahelper_basic.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/core/include/megbrain/utils/metahelper_basic.h b/src/core/include/megbrain/utils/metahelper_basic.h index c00048ac..f2a98434 100644 --- a/src/core/include/megbrain/utils/metahelper_basic.h +++ b/src/core/include/megbrain/utils/metahelper_basic.h @@ -99,6 +99,13 @@ namespace metahelper_detail { return else_(if_constexpr_identity{}); } }; + + template + decltype(auto) array_skip_impl(const std::array& arr, + std::index_sequence) { + static_assert(isize > skip, "invalid argument `skip`"); + return std::forward_as_tuple(arr[I + skip]...); + } } // namespace metahelper_detail //! construct index_sequence<0..N-1> @@ -344,6 +351,12 @@ decltype(auto) if_constexpr(Then&& then) { return if_constexpr(std::forward(then), [](auto) {}); } +template +decltype(auto) array_skip(const std::array& arr) { + return metahelper_detail::array_skip_impl( + arr, std::make_index_sequence{}); +} + } // namespace mgb // vim: syntax=cpp.doxygen foldmethod=marker foldmarker=f{{{,f}}}