哪些 Boost 功能与 C++11 重叠?

2023-12-07

几年前,我把我的 C++ 技能束之高阁,现在看来,当我再次需要它们时,情况已经发生了变化。

我们现在有了 C++11,我的理解是它重叠了许多 Boost 功能。

是否有一些总结,这些重叠在哪里,哪些 Boost 库将成为遗产,建议使用哪些 C++11 功能而不是 boost 功能,哪些最好不使用?


可被 C++11 语言功能或库替换

  • Foreach基于范围的
  • 功能/前锋→ 完美转发(有右值引用, 可变参数模板 and 标准::转发)
  • 就地工厂、打字就地工厂→ 完美转发(至少对于记录的用例而言)
  • Lambda拉姆达表达式(在非多态情况下)
  • 本地功能→ Lambda 表达式
  • Min-Maxstd::最小最大, std::minmax_element
  • Ratio标准::比率
  • 静态断言→ 静态断言
  • Thread 等(但检查这个问题).
  • Typeof→ 自动、decltype
  • 值已初始化→ 列表初始化 (§8.5.4/3)
  • Math/Special Functions<cmath>, see the list below
    • 伽玛函数(tgamma)、对数伽玛函数(lgamma)
    • 误差函数(erf、erfc)
    • log1p, expm1
    • cbrt, hypot
    • acosh, asinh, atanh

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

  • Array→ std::数组
  • Bind→ std::绑定
  • 启用如果→ std::enable_if
  • Function→ std::函数
  • 会员功能→ std::mem_fn
  • Random
  • Ref→ std::ref,标准::cref
  • Regex
  • 的结果std::结果
  • 智能指针→ std::unique_ptr、std::shared_ptr、std::weak_ptr(但 boost::intrusive_ptr 仍然无法替换)
  • Swap(交换数组)→ std::swap
  • Tuple→ std::元组
  • 类型特征
  • 无序→ ,

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

  • Atomic← std::原子
  • Chrono← (见下文)
  • Move← 右值参考

可被 C++17 语言功能替代:

  • 字符串引用→ std::string_view
  • 文件系统(文件系统 TS)
  • Optional→ std::可选 (库基础知识 TS v1)
  • Any→ std::any(库基础知识 TS v1)
  • Math/Special Functions<cmath> (Special Math IS), see the list below
    • 贝塔函数
    • (法线/关联/球面)勒让德多项式
    • (正态/相关)勒让德多项式
    • 埃尔米特多项式
    • Bessel(J/Y/I/K)函数(Y在C++中称为Neumann函数)
    • 球面贝塞尔 (j / y) 函数
    • (第一类/第二类/第三类)的(不完全/完全)椭圆积分
    • 黎曼zeta函数
    • 指数积分Ei
  • Variant→ std::变体 (P0088R2)

标准团队仍在研究中:

  • 数学公因数→ std::experimetal::gcd、lcm(库基础知识 TS v2)
  • 概念检查→ 概念 TS
  • Range→ 范围 TS
  • Asio→ 网络 TS(仅限套接字和定时器)
  • 多精度→ 数值 TS
  • 协程/协程2→ 协程 TS

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

一些 Boost 库与 C++11 相关,但也有更多扩展,例如Boost.Functional/Hash包含哈希合并以及 C++11 中未找到的相关函数,Boost.Chrono有 I/O 和舍入以及许多其他时钟等。因此,在真正放弃它们之前,您可能仍然想看看升压时钟。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

哪些 Boost 功能与 C++11 重叠? 的相关文章

随机推荐

  • 鉴于存储私钥的新 FIPS 要求,是否有任何方法可以将代码签名证书放入 Azure Key Vault?

    我们订购了新的代码签名证书 并在基于 USB 的 硬件令牌 上获取了私钥 这与新的代码签名证书规则兼容 但这限制了对一台物理 PC 的访问 我们确实希望证书位于 Azure Key Vault 中 可从我们的构建代理 使用 azuresig
  • Tkinter focus_set 和 focus_force 未按预期工作

    我正在尝试拥有Entry打开新页面时获得焦点的字段 import tkinter as tk from tkinter import from tkinter import ttk class DIS tk Tk def init self
  • 如何临时模拟用户打开文件?

    我想暂时模拟域用户帐户以从 ASP NET 站点读取网络驱动器上的文件 我不想为整个站点设置模拟或在服务器上设置映射驱动器 我最终使用了代码Michiel van Otegem WindowsImpersonationContext 变得简
  • 状态栏问题

    正如您从我的图像中看到的 状态栏显示在我的表格视图的顶部 我不明白我做错了什么导致这种情况发生 我确信这将是一个简单的修复 但我只是想念它 任何帮助将不胜感激 谢谢 您可以通过在 ViewDidLoad 方法中编写以下代码来避免此问题 fl
  • 序列化/反序列化不同的属性名称?

    我有一个旧系统 在请求信息调用中返回 xml 其名称如下所示 邮政编码字段 名字字段 然后 同一系统有一个修改调用 它采用如下所示的 xml 邮政编码 名字 姓氏 有没有办法构建一个对象来反序列化请求 同时使用不同的名称序列化 xml 输出
  • 将 Linq-to-Sql 查询的 WHERE 子句作为参数传递

    这可能有点突破了 Linq to Sql 的界限 但考虑到到目前为止它的多功能性 我想我应该问一下 我有 3 个查询 它们选择相同的信息 仅在where子句 现在我知道我可以传递一个委托 但这只允许我过滤已经返回的结果 但我想通过参数构建查
  • $lookup 中其他连接条件的性能严重下降(使用管道)

    因此 在一些代码审查期间 我决定通过改进一个聚合来提高现有查询性能 如下所示 aggregate difference starts here lookup from sessions localField id foreignField
  • Android 10 中的 Android 开发者无 IMEI

    由于 Android 非常重视安全性 并试图让新的 Android 版本更加安全 因此开发人员很难跟上新的安全功能并找到旧方法的替代方案来使他们的应用程序与旧功能兼容 这个问题是关于新Android 10中的IMEI 旧方法通过使用以下代码
  • 创建在 Rust 中实现特征的对象向量

    用Java来说 我试图创建一个对象 严格实例 的集合 向量 每个对象都实现一个接口 特征 因此我可以迭代该集合并对所有对象调用一个方法 我已将其缩减为下面的一个示例文件 其中包含我希望能够更轻松地获得答案的所有部分 main rs try
  • 如何通过API检索Google Doc上文档的所有建议接受内容

    正如标题 我设法通过 API 检索 Google Docs 上所有建议接受的内容 我已经提到过它的指导方针 and 几个帖子但在这个平台上却是徒劳的 下面是我目前拥有的片段 请指教 function myFunction var docum
  • 使用 scipy.interpolate 进行样条表示:低振幅、快速振荡函数的插值效果较差

    我需要 以数字方式 计算我尝试使用两者的函数的一阶和二阶导数splrep and UnivariateSpline创建样条曲线以对函数进行插值以获取导数 然而 对于大小为 10 1 或更低的函数 样条表示本身似乎存在固有问题and正在 快速
  • 当使用 WinSCP 选择要上传到 FTP 服务器的文件的掩码与文件不匹配时,SSIS 任务失败

    我正在创建一个 SSIS 包 它使用脚本任务 通过 WinSCP 将文件上传到 FTP 上传工作正常 但是如果没有上传文件 我需要该过程失败 目前它只是循环并成功通过 在 WinSCP 命令文件中编写脚本方面还没有获得任何帮助 option
  • 如何在selenium中查找具有多个类的元素

    我有一个包含 3 个类的元素 我需要用 selenium 找到它
  • 文本转语音(TTS)-Android

    我是android平台的新手 现在我正在努力TTS Text to Speech 如果我在文本区域中输入文本 并且希望在单击 发言 按钮时将其转换为语音 谁能帮我吗 文本转语音功能内置于 Android 1 6 中 这是一个如何执行此操作的
  • 如何获取 TextView 的精确位置(以像素为单位)?

    我有一部 2560 x 1440 像素的智能手机 现在我正在使用这个功能TextView int locationOnScreen new int 2 txtAp GetLocationInWindow locationOnScreen 它
  • 为具有圆角的 UIImageView 创建阴影?

    我正在尝试创建一个ImageView它有圆角和阴影以赋予它一些深度 我能够为UIImageView 但是每当我添加代码以使其具有圆角时 它只有圆角而没有阴影 我有一个IBOutlet named myImage 并且它位于viewDidLo
  • pandas 中的单列

    有没有办法在不影响数据框其余部分的情况下对 pandas 中的单个列进行舍入 gt gt gt print df item value1 value2 0 a 1 12 1 3 1 a 1 50 2 5 2 a 0 10 0 0 3 b 3
  • 在哪里以及如何定义应用程序属性? - JHIpster

    在 Spring Boot 中 可以在 application properties 文件中定义应用程序属性 例如 Rest 的前缀可以定义为 spring data rest basePath api 对于基于 Spring Boot 的
  • 游标如何引用已删除的行?

    当我从 Android 中的 sqlite 数据库查询返回游标时 它似乎包含固定数量的行 无论数据库发生什么情况 这些行都不会改变 例如 如果在光标打开时删除了某些行 我仍然可以引用已删除的行 这很好 但是它是如何工作的呢 一种猜测可能是
  • 哪些 Boost 功能与 C++11 重叠?

    几年前 我把我的 C 技能束之高阁 现在看来 当我再次需要它们时 情况已经发生了变化 我们现在有了 C 11 我的理解是它重叠了许多 Boost 功能 是否有一些总结 这些重叠在哪里 哪些 Boost 库将成为遗产 建议使用哪些 C 11