Array.cppm 880 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. export module Core.Array;
  2. export import Core.Types;
  3. namespace Core {
  4. export template<typename T, size_t N>
  5. struct Array final {
  6. T data[N] = {};
  7. constexpr void fill(const T& t) {
  8. for(size_t i = 0; i < N; i++) {
  9. data[i] = t;
  10. }
  11. }
  12. constexpr T& operator[](size_t index) {
  13. return data[index];
  14. }
  15. constexpr const T& operator[](size_t index) const {
  16. return data[index];
  17. }
  18. constexpr T* begin() {
  19. return data;
  20. }
  21. constexpr T* end() {
  22. return data + N;
  23. }
  24. constexpr const T* begin() const {
  25. return data;
  26. }
  27. constexpr const T* end() const {
  28. return data + N;
  29. }
  30. static constexpr size_t getLength() {
  31. return N;
  32. }
  33. };
  34. }