Commit 3fa2e787 authored by Aaryaman Sagar's avatar Aaryaman Sagar Committed by Facebook Github Bot

index_sequence_for_tuple

Summary: A simple helper to construct an index sequence from a given tuple type

Reviewed By: yfeldblum

Differential Revision: D8626776

fbshipit-source-id: a4ea412293981d58e91a921dcae8468849f5f0bf
parent 2826a4e8
...@@ -46,6 +46,13 @@ constexpr decltype(auto) apply(F&& func, Tuple&& tuple) { ...@@ -46,6 +46,13 @@ constexpr decltype(auto) apply(F&& func, Tuple&& tuple) {
folly::make_index_sequence<size>{}); folly::make_index_sequence<size>{});
} }
/**
* Helper to generate an index sequence from a tuple like type
*/
template <typename Tuple>
using index_sequence_for_tuple =
make_index_sequence<std::tuple_size<Tuple>::value>;
namespace detail { namespace detail {
namespace apply_tuple { namespace apply_tuple {
......
...@@ -416,3 +416,24 @@ TEST(MakeFromTupleTest, make_from_tuple) { ...@@ -416,3 +416,24 @@ TEST(MakeFromTupleTest, make_from_tuple) {
EXPECT_EQ(expected.tuple_, s3.tuple_); EXPECT_EQ(expected.tuple_, s3.tuple_);
EXPECT_TRUE(str.empty()); EXPECT_TRUE(str.empty());
} }
TEST(MakeIndexSequenceFromTuple, Basic) {
using folly::index_sequence;
using folly::index_sequence_for_tuple;
using OneElementTuple = std::tuple<int>;
using TwoElementTuple = std::tuple<int>;
EXPECT_TRUE((std::is_same<
index_sequence_for_tuple<OneElementTuple>,
index_sequence<0>>::value));
EXPECT_TRUE((std::is_same<
index_sequence_for_tuple<const OneElementTuple>,
index_sequence<0>>::value));
EXPECT_TRUE((std::is_same<
index_sequence_for_tuple<TwoElementTuple>,
index_sequence<0>>::value));
EXPECT_TRUE((std::is_same<
index_sequence_for_tuple<const TwoElementTuple>,
index_sequence<0>>::value));
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment