Program Listing for File constexpr_for.hpp#

↰ Return to documentation for file (source/pele/constexpr_for.hpp)

#ifndef CONSTEXPR_FOR
#define CONSTEXPR_FOR

#include <cstddef>
#include <utility>

template <std::size_t N>
struct num {
  static const constexpr auto value = N;
};

template <class F, std::size_t... Is>
void for_(F func, std::index_sequence<Is...>) {
  (func(num<Is>{}), ...);
}

template <std::size_t N, typename F>
void for_(F func) {
  for_(func, std::make_index_sequence<N>());
}

#endif  // !CONSTEXPR_FOR