The final C++11 standard includes provisions for range-based for to \"just work\" for native arrays without having to include or any other head
I'd say yes. According to §6.5.4[stmt.ranged]/1, the statement
for (auto i : { 1, 2, 3, 4, 5 }) ...
is just equivalent to
auto&& __range = { 1, 2, 3, 4, 5 }; ...
and that means an initializer_list is used, and the header needs to be included.
initializer_list