The phaseIsActive_ array has size numPhases. We must not form the expression phaseIsActive_[numPhases]. Switch to using fill_n in place of fill lest we have to write fill(&phaseIsActive_[0], &phaseIsActive_[0] + numPhases, v)