fork(2) download
  1. #include <iostream>
  2. #include <utility>
  3. #include <array>
  4. #include <cstddef>
  5.  
  6.  
  7. template <typename F, std::size_t... I>
  8. constexpr auto generate (F&& f, std::index_sequence<I...>) -> std::array<decltype(std::forward<F> (f) (0)), sizeof...(I)> {
  9. return {{ std::forward<F> (f) (I) ... }};
  10. }
  11.  
  12. template <std::size_t S, typename F>
  13. constexpr auto generate (F&& f) -> std::array<decltype(std::forward<F> (f) (0)), S> {
  14. return generate (std::forward<F> (f), std::make_index_sequence<S> {});
  15. }
  16.  
  17. constexpr int myLutCalc (std::size_t index) {
  18. return index * 2;
  19. }
  20.  
  21. constexpr auto myLUT = generate<10> (myLutCalc);
  22.  
  23. int main() {
  24. for (auto& x : myLUT) {
  25. std::cout << x << ", ";
  26. }
  27. std::cout << std::endl;
  28. return 0;
  29. }
Success #stdin #stdout 0s 15232KB
stdin
Standard input is empty
stdout
0, 2, 4, 6, 8, 10, 12, 14, 16, 18,