Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>КД>for (; _First != _Last; ++_Dest, (void)++_First)
КД>
КД>Зачем здесь (void)?
Защита от переопределения
operator,.
Если этот оператор задан, то запись
++_Dest, ++_First может означать
(++Dest).operator,(++_First), то есть делать совсем не то, что было задумано.
А так как оператор запятая не может принимать одним из своих аргументов void, то в конструкции
++_Dest, (void)++_First он никогда не вызовется.