1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
#ifndef DIM_HPP
#define DIM_HPP

#include <cstdlib>

std::size_t dim(const char* const* argv) {
   std::size_t count = 0;
   while (*argv++) ++count;
   return count;
}

template<typename T, std::size_t N>
constexpr std::size_t dim(const T (&)[N]) {
   return N;
}

template<typename T>
auto dim(const T& container) -> decltype(container.size()) {
   return container.size();
}

#endif