> C++ has all the bits needed to check array bounds by default but chooses not to do so...
std::array::at does bound check.
std::array::at does bound check.
Which most sane compilers will do for you in debug builds.
Opinions differ on whether this is the great strength or fatal flaw in C++.
Sorry, I challenge your authority to decide what is "most natural way".