More flexible for loop initialization, allowing multiple init statements:template <auto size>void lcase(const char (&in)[size], char (&out)[size]){ for (auto b = in, e = in + size; auto o = out; b != e; ++b, ++o)
template <auto size>void lcase(const char (&in)[size], char (&out)[size]){ for (auto b = in, e = in + size; auto o = out; b != e; ++b, ++o)
*o = std::tolower(*b);}