C ++ 11与使用C ++ 11编译器构建的最新Boost版本(例如1.55)之间的互操作性程度如何。
答案 0 :(得分:6)
gcc
与-std=c++11
一起构建的对象。您将收到链接错误甚至运行时崩溃。我无法保证其他C ++实现。所以至少使用gcc
,你需要在启用c ++ 11模式的情况下构建一个单独版本的Boost。 编辑我看到人们仍在阅读(并且正在恭维!)这个答案。第1点不再是真的(或者可能永远不会是真的)。我认为5.1版本的gcc版本默认使用与-std=<anything>
兼容的ABI。
答案 1 :(得分:2)
没有行为改变:在代码级别,Boost与C ++ 03和C ++ 11兼容。
但是,在对象级别,您无法混合和匹配:如果您的程序编译为C ++ 11,并且您使用了一些非标头Boost库,那么您将拥有将这些Boost库构建为C ++ 11。这是因为无法保证每种语言版本的工具链的各个C ++运行时都具有ABI兼容性。