Iterate over std::tuple
for_each(std::make_tuple(1, '2', 3.3), [](auto x) {
std::cout << x << std::endl;
});
Cx14 solution
#include <cstddef>
#include <tuple>
#include <utility>
template <typename Tuple, typename F, std::size_t ...Indices>
void for_each_impl(Tuple&& tuple, F&& f, std::index_sequence<Indices...>) {
using swallow = int[];
(void)swallow{1,
(f(std::get<Indices>(std::forward<Tuple>(tuple))), void(), int{})...
};
}
template <typename Tuple, typename F>
void for_each(Tuple&& tuple, F&& f) {
constexpr std::size_t N = std::tuple_size<std::remove_reference_t<Tuple>>::value;
for_each_impl(std::forward<Tuple>(tuple), std::forward<F>(f),
std::make_index_sequence<N>{});
}
Written on December 14, 2017, Last update on March 30, 2021
c++
tuple