Why are there two versions of the same functions in FlexArray, such as const type& at() const and type& at().
std::vector::at() does the same thing, so there has to be a reason, but we can't figure out what @jcmcdonald was thinking.
Docs showing the same convention with https://en.cppreference.com/w/cpp/container/vector/at
this has some explanations. I guess it helps in multi threaded applications.