ごめんなさい VC++の話です。
以下のプログラムが思った動きをしないことを見つけました。
0から32767がソートされて出力されると思うのですが?
32767が32766だと出力されます。
ソート関数の中を見ると確かに間違っているように見えるのですが
もしかしたら仕様なのか?

#include <list>
#include <iostream>

using namespace std;

void main()
{
int i;
list <int> wlist;
for( i = 32767 ; i >= 0 ; --i )
{
wlist.push_back( i );
}

wlist.sort();

for( list<int>::iterator ite = wlist.begin() ; ite != wlist.end() ; ++ite
)
{
cout << (*ite) << "\t";
if( (*ite)%10 == 9 )
cout << endl;

}

}