効率的な番兵法は常にアルゴリズムとともにあるから
  ↓こんなやつ
  while (buf[i] < buf[i]) { std::swap(buf[i], buf[i]); i--; } // buf[0]はINT_MAX

範囲の一般的表現のうちに含めるのは頭おかしい