我恨微软!

Bill_Gates.jpg今天花了一下午用VC+openGL写图形学那个扫描线算法,本来想着用STL现成的list的就行了,没想到list.sort()那个函数竟然不能接我写的函数对象,总是说不能把这个对象转换为greater。我调啊调,还是那句话,就晕了,这和greater有什么关系?难道我用错了?去翻Bjarne Stroustrup的蓝宝书TCPL,上面写的自认为和我的做法没区别。

无奈,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 pr);
导致无论什么参数传进去,编译器都愣要转成greater
RESOLUTION里面说的解决办法和没说一样,重载greater...所以我一气之下,干脆把greater直接当小于号用了,微软都这么干,我怕什么啊!

MS写代码的人啊,你rp哪里去了!记得上次就是因为STL库里面的另外一个BUG,让友元都不能访问私有成员,也让我调半天。没想到VC6打了sp6也不管用,还有这么严重的BUG。一看时间——Last Review : July 5, 2005,VC6推出都多少年了?

一个下午就这么过了,我恨微软!!!

随机文章:

Add a Comment