TuringSim
C++ framework to simulate abstract computing models
arrayBuilder.h
1 #pragma once
2 
3 #include <array>
4 
8 namespace TuringSim::Utils {
9 
15  template <typename T, size_t N>
16  class ArrayBuilder {
17  private:
18  template<typename F, size_t... Is>
19  constexpr static std::array<T, N> _fromFunction(F f, std::index_sequence<Is...>) {
20  static_assert(N == sizeof...(Is));
21  return {{f(Is)...}};
22  }
23 
24  public:
30  template<typename F>
31  constexpr static std::array<T, N> fromFunction(F f) {
32  return ArrayBuilder<T, N>::_fromFunction<>(f, std::make_index_sequence<N>());
33  }
34  };
35 }
TuringSim::Utils::ArrayBuilder
Build an array at compile time by applying a function.
Definition: arrayBuilder.h:16
TuringSim::Utils
The namespace for basic function, not specific to TuringSim.
TuringSim::Utils::ArrayBuilder::fromFunction
constexpr static std::array< T, N > fromFunction(F f)
Builds an array of size N by filling it with f(0), ..., f(N-1).
Definition: arrayBuilder.h:31