template<typename T> T const & at(T const * const a, std::size_t const index, std::size_t const size) { return ((index < size) ? a[index] : throw index); } int val = at((int const * )0, 1, 0);