今天花了一下午用VC+openGL写图形学那个扫描线算法,本来想着用STL现成的list的就行了,没想到list.sort()那个函数竟然不能接我写的函数对象,总是说不能把这个对象转换为greater
无奈,google一下,N多人在问:how do I use STL's list's sort method (the one that takes a parameter)... 就是没人答得沾边,好不容易看一个人回复了一段可是work around的程序,读了半天发现是他把list倒腾到vector里面排序再倒腾回去。我当时就想抽他~
最终我看到了最让人郁闷的网页,来自可爱的Microsoft...
BUG: The STL list::sort() Function Doesn't Sort a List of Pointers
原来VC6的STL代码里面
template
void sort(Pred pr);
错写成了
void sort(greater
导致无论什么参数传进去,编译器都愣要转成greater
RESOLUTION里面说的解决办法和没说一样,重载greater
MS写代码的人啊,你rp哪里去了!记得上次就是因为STL库里面的另外一个BUG,让友元都不能访问私有成员,也让我调半天。没想到VC6打了sp6也不管用,还有这么严重的BUG。一看时间——Last Review : July 5, 2005,VC6推出都多少年了?
一个下午就这么过了,我恨微软!!!