C++17

std::size

version 1 :

template <class C>
constexpr auto size(const C& c) -> decltype(c.size())
{
    return c.size();
}

version 2 :

template <class T, std::size_t N>
constexpr std::size_t size(const T (&array)[N]) noexcept
{
    return N;
}