General Purpose library for Freestanding C++ and POSIX systems
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

47 行
812 B

  1. #pragma once
  2. #include <gp/buffer.hpp>
  3. namespace gp{
  4. template<typename T, std::size_t sz>
  5. class array{
  6. T ary[sz];
  7. public:
  8. using associated_iterator = typename buffer<T>::associated_iterator;
  9. constexpr T& operator[] (size_t off)
  10. {
  11. return ary[off];
  12. }
  13. constexpr size_t size() const
  14. {
  15. return sz;
  16. }
  17. constexpr associated_iterator begin() const
  18. {
  19. return gp::buffer<T>{(T*)ary, (T*)ary+sz}.begin();
  20. }
  21. constexpr associated_iterator end() const
  22. {
  23. return gp::buffer<T>{(T*)ary, (T*)ary+sz}.end();
  24. }
  25. constexpr bool operator==(const array& oth) const
  26. {
  27. for(size_t idx = 0; idx<sz; idx++)
  28. {
  29. if(ary[idx] != oth.ary[idx])
  30. {
  31. return false;
  32. }
  33. }
  34. return true;
  35. }
  36. gp::buffer<T> as_buffer()
  37. {
  38. return gp::buffer<T>{(T*)ary, (T*)ary+sz};
  39. }
  40. };
  41. }