C++ 为什么捕捉std::bad_cast在FreeBSD 9上不起作用?

C++ 为什么捕捉std::bad_cast在FreeBSD 9上不起作用?,c++,freebsd,C++,Freebsd,考虑以下代码(badcast.cpp): Debian Linux 6: $ g++ badcast.cpp -o badcast -Wall && ./badcast bad cast OS X 10.8: $ g++ badcast.cpp -o badcast -Wall && ./badcast bad cast 为什么抓拍坏演员在FreeBSD上不起作用?猜测一下,在FreeBSD中,您可能使用LLVM的新演员,而不是旧的GNU。FreeBSD已经超

考虑以下代码(badcast.cpp):

Debian Linux 6:

$ g++ badcast.cpp -o badcast -Wall && ./badcast
bad cast
OS X 10.8:

$ g++ badcast.cpp -o badcast -Wall && ./badcast
bad cast

为什么抓拍坏演员在FreeBSD上不起作用?

猜测一下,在FreeBSD中,您可能使用LLVM的新演员,而不是旧的GNU。FreeBSD已经超越了GNU GPL的许可软件

苹果也正朝着这个方向发展,过去我在使用
libc++
为Mac开发时遇到了
libstdc++
所没有的问题(尤其是使用Boost)

您可以使用
ldd
确认要链接的库:

ldd ./badcast

如果它是针对
libc++
的链接,那么您可能需要将该bug和测试用例归档。

似乎是标准库中的bug+1.你在其他平台上检查过这个代码吗?也许未使用的变量只是被优化了?猜猜看,VC++2010的演员阵容很糟糕+1此代码在FreeBSD 9.0 amd64上运行。我已经在FreeBSD上报告了此错误。正在编写我的错误报告的人。到目前为止,他们提到了一些看似明显加载的C++库之间的符号冲突。
$ g++ badcast.cpp -o badcast -Wall && ./badcast
bad cast
ldd ./badcast