75static_assert(__cplusplus >= 201703L,
76 " must be c++17 or greater");
127 static auto ref(
const auto& t) {
return std::ref(t); }
128 static auto ref(
auto& t) {
return std::ref(t); }
130 static auto ref(
const auto&& t) {
return t; }
131 static auto ref(
auto&& t) {
return t; }
141 template <
class F,
class A>
auto apply2(F&& f, A&&
a, A&&
b)
#define BB_ASSERT_EQ(actual, expected,...)
static auto ref(const auto &t)
bool if_any_impl(const A &t, std::index_sequence< I... >) const
auto get_refs(T t, std::index_sequence< I... >) const
void for_each_in_tuple(F &&f, A &&t) const
auto apply2_impl(F &&f, A &&a, A &&b, std::index_sequence< I... >)
auto apply2(F &&f, A &&a, A &&b)
std::make_index_sequence< std::tuple_size_v< std::remove_reference_t< T > > > tuple_indexes
bool if_any_in(A &&t) const
static auto ref(const auto &&t)
static auto ref(auto &&t)
bool operator!=(const zip_iterator &other) const
auto for_each_in_impl(F &&f, Tuple &&t, std::index_sequence< I... >) const
zip_iterator(T iter, T iter_end)
zip_iterator & operator++()
auto size_impl(std::index_sequence< I... >) const
std::make_index_sequence< sizeof...(S)> arg_indexes
auto max_size_impl(std::index_sequence< I... >) const
bool if_any_impl(const A &t, std::index_sequence< I... >) const
zip_view(ZipAllowDifferentSizes, S... args)
auto get_begins(std::index_sequence< I... >) const
auto get_ends(std::index_sequence< I... >) const
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept