C++ 11和使用C++ 11编译器构建的Boost最新版本(比如1.55)之间的互操作性程度如何。Boost和C++之间的互操作性11
- 任何库功能的行为是否会根据我是否构建启用了C++ 11标志的库而改变?
- lambda函数等语言功能如何与Boost的lambdas配合使用?
C++ 11和使用C++ 11编译器构建的Boost最新版本(比如1.55)之间的互操作性程度如何。Boost和C++之间的互操作性11
gcc
与不-std=c++11
在一起的对象。你会得到链接错误甚至运行时崩溃。我不能担保其他C++实现。因此,至少在gcc
的情况下,您确实需要构建独立版本的启用了C++ 11模式的Boost。编辑我看到人们还在读书(和upvoting!)这个答案。点1是不再是真的(或者可能从未如此)。从我认为5.1版本的gcc默认使用与-std=<anything>
兼容的ABI。
没有行为改变:在代码级Boost与C++ 03和C++ 11兼容。
但是,在对象级别上,您将无法混合匹配:如果您的程序编译为C++ 11,并且您正在使用某些非头文件Boost库,则必须构建这些库像C++ 11一样提升库。这是因为每种语言版本的工具链各自的C++运行时间不能保证具有ABI兼容性。
Lambda函数和Boost的lambda不会干涉。它们都只是功能对象。只有C++ 11 lambda表达式是编译器生成的,Boost使用表达式模板。 – sehe