哪些 Boost 特性与 C++11 重叠? [英] Which Boost features overlap with C++11?

查看:29
本文介绍了哪些 Boost 特性与 C++11 重叠?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

几年前我把我的 C++ 技能放在了架子上,现在看来,当我再次需要它们时,情况发生了变化.

I put my C++ skills on the shelf several years ago and it seems now, when I need them again, the landscape has changed.

我们现在已经有了 C++11,我的理解是它与许多 Boost 特性重叠.

We have got C++11 now, and my understanding is that it overlaps many Boost features.

是否有一些重叠之处的总结,哪些 Boost 库将成为遗产,建议使用哪些 C++11 特性而不是 boost 特性,哪些最好不要?

Is there some summary where those overlaps lie, which Boost libraries going to become legacy, recommendation of which C++11 features to use instead of boost ones and which better not?

推荐答案

可由 C++11 语言特性或库替换

Replaceable by C++11 language features or libraries

  • Foreach基于范围
  • Functional/Forward → 完美转发(使用 右值引用、可变参数模板std::转发)
  • 现场工厂,输入工厂→ 完美转发(至少对于记录在案的用例而言)
  • LambdaLambda 表达式(在非多态情况下)
  • 本地函数 → Lambda 表达式
  • 最小-最大std::minmax, std::minmax_element
  • 比率std::ratio
  • 静态断言 → static_assert
  • 线程 → <线程> 等(但请检查这个问题).
  • Typeof → auto, decltype
  • 值初始化 → 列表初始化(§8.5.4/3)
  • 数学/特殊函数,见下表
    • 伽马函数 (tgamma)、对数伽马函数 (lgamma)
    • 误差函数(erf、erfc)
    • log1p, expm1
    • cbrthypot
    • acoshasinhatanh
    • Foreach → range-based for
    • Functional/Forward → Perfect forwarding (with rvalue references, variadic templates and std::forward)
    • In Place Factory, Typed In Place Factory → Perfect forwarding (at least for the documented use cases)
    • Lambda → Lambda expression (in non-polymorphic cases)
    • Local function → Lambda expression
    • Min-Max → std::minmax, std::minmax_element
    • Ratio → std::ratio
    • Static Assert → static_assert
    • Thread → <thread>, etc (but check this question).
    • Typeof → auto, decltype
    • Value initialized → List-initialization (§8.5.4/3)
    • Math/Special Functions → <cmath>, see the list below
      • gamma function (tgamma), log gamma function (lgamma)
      • error functions (erf, erfc)
      • log1p, expm1
      • cbrt, hypot
      • acosh, asinh, atanh

      TR1(它们在文档中被标记,如果那些是 TR1 库)

      TR1 (they are marked in the documentation if those are TR1 libraries)

      • Array → std::array
      • Bind → std::bind
      • Enable If → std::enable_if
      • Function → std::function
      • Member Function → std::mem_fn
      • Random → <random>
      • Ref → std::ref, std::cref
      • Regex → <regex>
      • Result Of → std::result_of
      • Smart Ptr → std::unique_ptr, std::shared_ptr, std::weak_ptr (but boost::intrusive_ptr still cannot be replaced)
      • Swap (swapping arrays) → std::swap
      • Tuple → std::tuple
      • Type Traits → <type_traits>
      • Unordered → <unordered_set>, <unordered_map>

      从 C++11 向后移植的功能:

      Features back-ported from C++11:

      • Atomic ← std::atomic
      • Chrono ← <chrono> (see below)
      • Move ← Rvalue references

      可替换为 C++17 语言特性:

      Replaceable by C++17 language features:

      • String_ref → 标准::string_view
      • 文件系统(文件系统 TS)
      • 可选 → std::optional (图书馆基础 TS v1)
      • 任何 → std::any(库基础 TS v1)
      • 数学/特殊函数(特殊数学是),见下表
        • 测试功能
        • (正常/相关/球面)勒让德多项式
        • (正态/关联)勒让德多项式
        • 厄米多项式
        • Bessel (J/Y/I/K) 函数(Y 在 C++ 中称为 Neumann 函数)
        • 球形贝塞尔 (j/y) 函数
        • (第一类/第二类/第三类)的(不完全/完全)椭圆积分
        • 黎曼 zeta 函数
        • 指数积分 Ei
        • String_ref → std::string_view
        • Filesystem → <filesystem> (Filesystem TS)
        • Optional → std::optional (Library Fundamentals TS v1)
        • Any → std::any (Library Fundamentals TS v1)
        • Math/Special Functions → <cmath> (Special Math IS), see the list below
          • beta function
          • (normal / associated / spherical) Legendre polynomials
          • (normal / associated) Legendre polynomials
          • Hermite polynomials
          • Bessel (J / Y / I / K) functions (Y is called Neumann function in C++)
          • spherical Bessel (j / y) functions
          • (incomplete / complete) elliptic integrals of (first / second / third kind)
          • Riemann zeta function
          • exponential integral Ei

          标准团队仍在努力:

          • Math Common Factor → std::experimetal::gcd, lcm (Library Fundamentals TS v2)
          • Concept check → Concepts TS
          • Range → Range TS
          • Asio → Networking TS (sockets and timers only)
          • Multiprecision → Numerics TS
          • Coroutine/Coroutine2 → Coroutines TS

          MPL 的很大一部分可以使用可变参数模板修剪或删除.词法转换的一些常见用例可以替换为std::to_string 和 std::stoX.

          A large part of MPL can be trimmed down or removed using variadic templates. Some common use cases of Lexical cast can be replaced by std::to_string and std::stoX.

          一些 Boost 库与 C++11 相关,但也有更多的扩展,例如Boost.Functional/Hash 包含 hash_combine 以及 C++11 中未找到的相关函数,Boost.Chrono 具有 I/O 和舍入以及许多其他时钟等,因此您可能仍想在真正关闭它们之前查看一下 boost .

          Some Boost libraries are related to C++11 but also have some more extensions, e.g. Boost.Functional/Hash contains hash_combine and related functions not found in C++11, Boost.Chrono has I/O and rounding and many other clocks, etc. so you may still want to take a look at the boost ones before really dismissing them.

          这篇关于哪些 Boost 特性与 C++11 重叠?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆