C++ libstdc++;在Linux中?

C++ libstdc++;在Linux中?,c++,linux,visual-studio-2010,stl,C++,Linux,Visual Studio 2010,Stl,我在VS2010的调试模式下运行我的代码,它捕捉到了一个关于invalid operator

我在VS2010的调试模式下运行我的代码,它捕捉到了一个关于invalid operator<的错误,这不是严格的弱排序。是否有方法在Linux上的libstdc++中捕获这些错误,或者此类保守检查只是visual studio 2010的一项功能?

定义
\u GLIBCXX\u调试
应该可以做到这一点:


您如何区分“错误”和预期行为?也许我真的想考虑某个对象在语义上是相等的,即使它们不是二进制相等的吗?@ Kerrek:他不是在谈论平等,而是在“小于”,而THL容器需要<代码>。operator@jalf:相等意味着
!(a@kerreb:你读了我写的东西了吗?这不是我说什么的问题,而是STL容器需要什么。你可以定义
运算符,我什么都没说,STL说什么都不禁止
返回a.size()
。这实际上是一个非常有效的运算符。如果你读过这个问题,你可能会注意到OP的错误是他的运算符不是严格弱序。你的示例运算符是,所以它几乎不太相关,是吗?糟糕的是,这使得stl与ABI不兼容,与使用stl的boost之类的库一起使用是一团乱d不会与此标志链接。@piotr:没有任何东西阻止您使用此标志构建boost。boost和任何使用STL的库,非平凡的业务。那么VS不用重新编译库就可以了,还是可以了?不,您与VS有完全相同的问题。无法避免它,因为执行所有这些的唯一方法是STL的调试验证是向STL类型添加额外的成员和数据结构,这样做本身就破坏了ABI的兼容性。