使用Boost与c++ 14编译器

Using Boost with C++14 compiler

本文关键字:编译器 c++ Boost 使用      更新时间:2023-10-16

当我用c++ 11支持(使用-std=c++11标志)编译我的代码并使用非头文件仅Boost库时,我需要用-std=c++11编译Boost。这是因为当启用c++ 11时,Boost在头文件中有一些接口差异,并且对于不同的c++标准,一些函数签名是不同的。

我的问题是,对于c++ 14(使用g++ 4.9,带有' -std=c++1y标志)是否也是如此,或者对于用c++ 14编译的程序使用c++ 11编译的Boost是否安全?

这是一个非常宽泛的问题,很难明确地回答,因为

  • Boost是一个图书馆联盟,其中许多都有十多年的历史了
  • 有相当多的向后兼容性,原则上可以发生,有些由编译器检测到,有些只能由单元测试
  • 许多Boost库实际上是c++ 11/14特性(包括库和编译器功能)的c++ 98实现,因此您不需要在c++ 11/14项目中使用它。Boost本身也在争论库应该以什么速度更新到c++ 11/14,是否应该编写充分利用c++ 11/14的V2版本的库,甚至新的c++ 11/14库是否应该提供向后的c++ 98兼容性。

您可能需要仔细阅读编译器错误(如果有的话),并将它们与下面列出的破坏性更改列表进行比较。此外,我建议使用Boost测试工具来查找适用于您系统的可疑编译器/库组合。

这里有一些相关的问题:

    c++ 11中引入了哪些突破性的变化?
  1. c++ 14中引入的哪些变化可能会破坏用c++ 11编写的程序?
  2. 与c++ 11相关的boost特性
  3. boost使用c++11有多好?