15 #include <gtest/gtest.h>
19 #include <type_traits>
22 #include <range/v3/range/access.hpp>
23 #include <range/v3/utility/common_tuple.hpp>
24 #include <range/v3/view/subrange.hpp>
36 ranges::subrange<ranges::iterator_t<
int[3]>, ranges::sentinel_t<
int[3]>>>);
38 static_assert(!beluga::is_tuple_like_v<int>);
39 static_assert(!beluga::is_tuple_like_v<struct Object>);
56 TEST(TupleTraits, ElementAccess) {
57 std::pair<int, double> pair{1, 2.0};
58 auto& value = beluga::element<int>(pair);
60 ASSERT_EQ(std::get<0>(pair), 3);
63 TEST(TupleTraits, ReferenceElementAccess) {
65 std::tuple<int, double&> pair{1, real};
66 auto& value = beluga::element<double>(pair);
68 ASSERT_EQ(std::get<1>(pair), 3.0);