Skip to content

Commit

Permalink
[code] Simplify for_each_in_tuple
Browse files Browse the repository at this point in the history
  • Loading branch information
jcelerier committed Jun 1, 2023
1 parent 66ec349 commit 670bd59
Showing 1 changed file with 3 additions and 45 deletions.
48 changes: 3 additions & 45 deletions src/ossia/detail/for_each_in_tuple.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,51 +7,9 @@

namespace ossia
{

// http://stackoverflow.com/a/26902803/1495627
#if __cplusplus < 202002L

template <typename... T>
struct dummy_get_adl;

template <std::size_t N, typename... Args>
auto get(dummy_get_adl<Args...>);

#endif

template <template <typename...> class Tuple, class F, class... Ts, std::size_t... Is>
void for_each_in_tuple(const Tuple<Ts...>& tuple, F&& func, std::index_sequence<Is...>)
{
(std::forward<F>(func)(get<Is>(tuple)), ...);
}
template <template <typename...> class Tuple, class F, class... Ts, std::size_t... Is>
void for_each_in_tuple(Tuple<Ts...>& tuple, F&& func, std::index_sequence<Is...>)
{
(std::forward<F>(func)(get<Is>(tuple)), ...);
}

template <template <typename...> class Tuple, class F, class... Ts>
void for_each_in_tuple(const Tuple<Ts...>& tuple, F&& func)
{
for_each_in_tuple(
tuple, std::forward<F>(func), std::make_index_sequence<sizeof...(Ts)>());
}

template <template <typename...> class Tuple, class F>
void for_each_in_tuple(const Tuple<>& tuple, const F& func)
{
}

template <template <typename...> class Tuple, class F, class... Ts>
void for_each_in_tuple(Tuple<Ts...>& tuple, F&& func)
{
for_each_in_tuple(
tuple, std::forward<F>(func), std::make_index_sequence<sizeof...(Ts)>());
}

template <template <typename...> class Tuple, class F>
void for_each_in_tuple(Tuple<>& tuple, const F& func)
{
template <class Tuple, class F>
void for_each_in_tuple(Tuple&& tuple, F&& func) {
apply([&](auto&&... args) { (func(args), ...); }, static_cast<Tuple&&>(tuple));
}

template <class F, class T1, std::size_t... I1s, class T2>
Expand Down

0 comments on commit 670bd59

Please sign in to comment.