std::fill takes a range that is open on the right bound (i.e. [first, last) and not [first, last]). (cherry picked from commit 743ccf77)