>>484
わからなくても動くようにしないといけないだろ。
こういうテンプレートでの可搬性が下がる。

template< class Iterator, class Type > Type Sum( Iterator begin, Iterator end, const Type &initial )
{
  Type sum = initial;
  while( begin != end )
  {
    sum += *begin;
    ++begin:
  }
  return sum;
}