listの個数の挙動

  list list1(26, 'x');
  cout << list1.size() << endl;
  merge(&s[0], &s[5], deque1.begin(), deque1.begin()+10, list1.begin());
  cout << list1.size() << endl;
  while(!list1.empty()) {
    cout << list1.front() << endl;  //a\nb\n....xxxxxxxx
    list1.pop_front();
  }
}

と、

  cout << list1.size() << endl;
  merge(&s[0], &s[5], deque1.begin(), deque1.begin()+10, list1.begin());
  cout << list1.size() << endl;
  for(int i = 0; i < list1.size(); i++) {
    cout << list1.front() << endl; //abcdefghijlno 13個出力で終了
    list1.pop_front();
  }

は違うんだぜ.
二つ目のはsize()がループするごとにどんどん可変的に減っていくので、ちょうど半分で出力が止まってしまうのです.