【问题标题】:Using Boost with C++14 compiler将 Boost 与 C++14 编译器一起使用
【发布时间】:2014-07-11 02:45:03
【问题描述】:

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

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

【问题讨论】:

  • 在 C++14 标准最终确定之前,没有什么是安全的,在撰写本文时,情况并非如此。由于它的范围广泛限于对 C++11 的修复,我想你会使用 -std=c++11 逃脱。
  • 我不认为 C++14 将与 C++11 100% 兼容,至少有 1 种情况表明,在这个时间点,它的处理方式有所不同这 2 个标准(当然 C++14 还没有,所以关于它的一切都是假设的)。

标签: c++ c++11 boost c++14 gcc4.9


【解决方案1】:

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

  • Boost 是一个图书馆联盟,其中许多图书馆已有十多年的历史
  • 原则上可能会发生很多向后兼容性,有些是由编译器检测到的,有些是由单元测试检测到的
  • 许多 Boost 库实际上是 C++11/14 功能(库和编译器功能)的 C++98 实现,因此您不需要在 C++11/14 项目中使用它。李>
  • Boost 本身非常争论库应该以何种速度更新到 C++11/14,是否应该编写完全利用 C++11/14 的库的 V2 版本,甚至是否应该编写新的 C ++11/14 库应提供向后 C++98 兼容性

您可能需要仔细阅读编译器错误(如果有)并将它们与下面列出的重大更改列表进行比较。此外,我建议关注 Boost test harness 以查找适用于您系统的可疑编译器/库组合。

这里有一些相关的问答:

  1. What breaking changes are introduced in C++11?
  2. What changes introduced in C++14 can potentially break a program written in C++11?
  3. Relevant boost features vs C++11
  4. How well does boost use c++11?

【讨论】:

    猜你喜欢
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-22
    • 2023-04-06
    • 2012-05-06
    • 1970-01-01
    • 2021-11-22
    相关资源
    最近更新 更多