array_size.h 448 B

123456789101112131415161718192021222324
  1. #pragma once
  2. #include <cstddef>
  3. namespace NArraySizePrivate {
  4. template <class T>
  5. struct TArraySize;
  6. template <class T, size_t N>
  7. struct TArraySize<T[N]> {
  8. enum {
  9. Result = N
  10. };
  11. };
  12. template <class T, size_t N>
  13. struct TArraySize<T (&)[N]> {
  14. enum {
  15. Result = N
  16. };
  17. };
  18. }
  19. #define Y_ARRAY_SIZE(arr) ((size_t)::NArraySizePrivate::TArraySize<decltype(arr)>::Result)