This is because you could make k valid by specializing std::array:
k
std::array
struct S {}; namespace std { template <size_t N> array<S> { array(...) {} int operator(size_t i) const { return i; } }; } k(S{}); // prints 1