【发布时间】:2018-10-25 03:55:38
【问题描述】:
添加到最近的 ISO C++ 标准中的一些新功能最初是 boost 的一部分。 这自然提出了编写可移植代码的准则问题。
在使用旧版标准时,是否有一种规范的方法可以便携地使用新的语言功能?
如果您已经在使用 boost,您应该继续使用 boost 版本还是 C++17 中的版本还是实验版本?
在便携方面你应该走多远?
我很惊讶没有在某处发现这个问题作为常见问题解答。 核心指南、boost 常见问题解答和/或作为 ISO 委员会文件中不应该有关于此的内容吗?
似乎存在关于个别功能的问题,但考虑到更广泛的观点则较少。 例如:
【问题讨论】:
-
boost 库总是比标准库更完整、功能更丰富、更便携。使用提升。
-
“你应该走多远”——呼吁在没有上下文的情况下进行价值判断。这个问题征求主观答案。使用您自己或项目成员的经验。
-
附言。我认为如果它专注于一个非常具体的主题(例如链接的“别名 boost::variant 或 std::variant 不可编译”),那么这个问题对于 SO 来说是可行的。
-
@DevSolar 为一个工具链编写的代码在与另一个工具链一起编译时可以工作。标准的黑暗角落往往在各种标准库中存在差异和错误(微软对销毁期货的非标准处理,苹果有缺陷的正则表达式库等)。 boost 团队努力保持跨工具链的兼容性。在由于操作系统限制或工具链错误而无法做到的地方,他们会很好地记录差异。
-
@DevSolar 此外,标准并发库远远落后于 boost.thread。有一个模糊的危险,我们最终可能会在 c++20 中获得执行者和未来的延续......在它以其他所有语言提供之后十多年。当 boost 特性最终达到标准时,它们总是被削减到无用的地步(参见上面的线程)。在编写 c++ 30 年后,我的建议是标准化你的编译器将承受的最新版本的 boost - 并不断升级。