Boost和C ++之间的互操作性11

时间:2014-03-26 11:05:45

标签: c++ c++11 boost

C ++ 11与使用C ++ 11编译器构建的最新Boost版本(例如1.55)之间的互操作性程度如何。

  1. 是否根据我是否使用c ++ 11标志构建库来改变任何库功能的行为?
  2. lambda函数等语言功能如何与Boost的lambdas合作?

2 个答案:

答案 0 :(得分:6)

  1. 您不能同时使用gcc-std=c++11一起构建的对象。您将收到链接错误甚至运行时崩溃。我无法保证其他C ++实现。所以至少使用gcc,你需要在启用c ++ 11模式的情况下构建一个单独版本的Boost。
  2. 他们非常独立。他们不合作,互不干涉。
  3. 编辑我看到人们仍在阅读(并且正在恭维!)这个答案。第1点不再是真的(或者可能永远不会是真的)。我认为5.1版本的gcc版本默认使用与-std=<anything>兼容的ABI。

答案 1 :(得分:2)

没有行为改变:在代码级别,Boost与C ++ 03和C ++ 11兼容。

但是,在对象级别,您无法混合和匹配:如果您的程序编译为C ++ 11,并且您使用了一些非标头Boost库,那么您将拥有将这些Boost库构建为C ++ 11。这是因为无法保证每种语言版本的工具链的各个C ++运行时都具有ABI兼容性。

相关问题