C++ Standard Library简介

目录

​编辑

引言:        

Boost C++ Libraries:截至本文编写时间最新版本 1.84.0

STL源码分析:

C++ STL源码分析(一):STL体系结构和一些基础知识

libc++:

概述

libc++ 入门

现状

平台和编译器支持

C++ 方言支持

注意事项和已知问题

设计文档

构建机器人和测试覆盖率

参与其中

快速链接


引言:        

        C++ Standard Library是C++语言标准库,由C++官方提供并定义了一系列标准的类型、函数和模板(包括输入/输出、字符串处理、数学计算、容器、算法等)。C++ Standard Library是C++语言的基础,并且是所有C++开发人员都应该掌握的知识点。

对于C++ Standard Library的开源项目框架,网上有很多资源可以参考,比如:

1. Boost C++ Libraries:Boost是一个非常受欢迎的C++开源库,包含了大量的C++ Standard库的扩展,以及其他一些常用的C++工具和库。

2. libc++:这是一个开源的C++标准库实现,由苹果公司开发维护,并被用于macOS和iOS平台。

以上是C++ Standard Library开源项目框架的一些推荐,可能还有其他更好的资源,可以根据自己的需求进行选择。下面简要介绍一下上面3个开源框架的相关内容:

Boost C++ Libraries:截至本文编写时间最新版本 1.84.0

官方网站为:https://www.boost.org/

        Boost C++ Libraries是一个由C++社区开发的开源库,包含了多个跨平台、功能丰富、高效的C++库,覆盖了C++标准库的缺失部分,同时提供了很多本质上与标准库无关的扩展。

        Boost被称为C++开发领域的“黄页”,并且被广泛应用于大量的领域,包括科学计算、网络编程、图形界面、多线程开发等等。有很多著名的开源库,比如Asio、Regex、Any、Thread等,最初都是在Boost中开发,然后逐渐成为标准库的一部分。

        Boost的设计理念是提高C++的代码复用性、开发效率和可移植性。Boost的库都是完全开源且具有可移植性,因此可以轻松地在不同的系统和编译器上使用。Boost库使用标准的C++编写,通常使用模板和泛型算法,这使得它们非常灵活且易于使用。

        Boost包含了许多重要的C++库。其中,最重要之一是Asio库,是一个高性能的网络编程库,提供了各种异步I/O操作,并支持同步和异步的网络编程。Asio还提供了对网络安全的支持,包括SSL、TLS和DTLS协议等。

        另一个重要的库是Thread库,它提供了C++11标准线程的许多扩展功能。比如:锁、条件变量、原子操作等,这些扩展在多线程编程中非常有用。

        还有一个非常实用的库是Regex(正则表达式)库,它支持使用Perl语法的正则表达式,能够进行高效的模式匹配操作。Regex库在文本处理和数据解析方面非常有用。

        此外,Boost库还提供了诸如容器、算法、时间、函数对象、智能指针等常用的C++库的扩展。网络库、数值计算、测试、图形界面、并行处理等领域也有基于Boost的优秀解决方案。

Boost库使用了自定义的构建工具,使得安装和使用非常方便。只需下载库的源码,解压缩后进入boost目录执行./bootstrap.sh或bootstrap.bat(Windows平台)。执行方式因平台而异。之后再执行./b2或b2.exe进行构建,这一过程中可以指定库、目标平台、编译器等选项。构建完成后,再在代码中引入需要的库即可。

总之,Boost C++ Libraries是一个非常重要和实用的C++开源库,提供了许多高效、灵活、易于使用的C++库,适用于各种应用场景。无论是初学者还是有经验的开发人员都应该了解这个库,以便更好地解决实际开发中的问题。最新提供了如下教程

  • 累加器:用于增量计算和统计累加器集合的框架。
  • 算法:有用的泛型算法的集合。
  • 对齐:内存对齐函数、分配器、特征。
  • Any:用于不同值类型的单个值的安全通用容器。
  • 阵列:符合 STL 标准的容器包装器,用于恒定大小的阵列。
  • 高性能的C++网络编程库Asio:便携式网络和其他低级 I/O,包括套接字、计时器、主机名解析、套接字 iostream、串行端口、文件描述符和 Windows 句柄。
  • 断言:可自定义的断言宏。
  • C++ STL中字符串类assign:用恒定数据或生成的数据填充容器从未如此简单。
  • 多线程编程库atomic:C++11 型原子<>。
  • 网络应用beast:仅使用 C++11 和 Boost.Asio 的可移植 HTTP、WebSocket 和网络操作
  • 双向映射库bimap:C++的双向映射库。使用 Boost.Bimap,您可以创建关联容器,其中两种类型都可以用作键。
  • 函数绑定机制Bind: boost::bind 是标准函数 std::bind1st 和 std::bind2nd 的泛化。它支持任意函数对象、函数、函数指针和成员函数指针,并且能够将任何参数绑定到特定值或将输入参数路由到任意位置。
  • 调用特征:定义用于传递参数的类型。
  • 函数式编程启发的编程方式CallableTraits:帮助C++程序员更好地处理函数、函数指针和函数对象等。CallableTraits让C++程序员可以在编译时分析和检查函数签名、参数列表和返回类型等属性,进而提供函数模板特化、重载、可变参和SFINAE等编程特性。
  • C++11标准库提供的一个时间库-Chrono:跨平台的时间相关函数和类,包括时钟、定时器、时间点时间间隔和高分辨率的时间度量等。
  • 循环缓冲区:符合 STL 标准的容器,也称为环形缓冲区或循环缓冲区。
  • Cobalt:协程。基本算法和类型
  • 兼容:在后来的 C++ 标准中添加的标准组件的 C++ 11 个实现。
  • 兼容性:对不符合标准库的帮助。
  • 组合压缩对像Compressed Pair:是C++标准库提供的一个模板类,它可以将两个不同类型的对象封装成一个单一的对象,实现了空间压缩和性能提升等优化。Compressed Pair的设计理念是基于C++的模板元编程思想,可以帮助程序员提高程序的性能、可读性和可维护性。
  • 计算:并行/GPU 计算库
  • 概念检查:通用编程工具。
  • Config:帮助 Boost 库开发人员适应编译器的特性;不适用于图书馆用户。
  • 容器:标准库容器和扩展。
  • 容器哈希:一个与 STL 兼容的哈希函数对象,可以扩展到哈希用户定义的类型。
  • 容器哈希:一个与 STL 兼容的哈希函数对象,可以扩展到哈希用户定义的类型。
  • 纤程(Coroutine)和协程(Coroutain)的基础支持上下文:context:提供一种轻量级、高效的纤程和协程的实现方案
  • 合约:C++的合约编程。支持所有合约编程功能:分包、类不变量、后置条件(带有旧值和返回值)、前置条件、断言失败时的可自定义操作(例如,终止或抛出)、断言的可选编译和检查等。
  • 转换:多态组件。
  • 类型转换Convert:一个可扩展和可配置的类型转换框架。
  • Core:具有最小依赖项的简单核心实用程序的集合。
  • 协程 2:(C++11) 协程库。
  • CRC:Boost CRC 库提供两种 CRC(循环冗余码)计算对象实现和 CRC 计算函数两种实现。实现是基于模板的。
  • 日期时间:一组基于通用编程概念的日期时间库。
  • 描述:一个 C++14 反射库。
  • DLL:用于舒适地使用 DLL 和 DSO 的库。
  • 动态位集:dynamic_bitset类表示一组位。它通过运算符[]提供对单个位值的访问,并提供可以应用于内置整数的所有按位运算符,例如运算符&和运算符<<。集合中的位数在运行时通过dynamic_bitset构造函数的参数指定。
  • 如果:选择性地包含函数模板重载,则启用。
  • 字节序:用于正确字节排序等的类型和转换函数,无论处理器字节序如何。
  • 异常:Boost Exception 库支持在异常对象中传输任意数据,以及在线程之间传输异常。
  • 线程库:(C++11)用户空间线程库。
  • 文件系统:Boost 文件系统库提供了可移植的工具来查询和操作路径、文件和目录。
  • 蝇量级:用于管理大量高度冗余对象的设计模式。
  • 遍历器Foreach:在 C++ 中,编写一个遍历序列的循环是很乏味的。我们可以使用迭代器,这需要大量的样板,或者我们可以使用 std::for_each() 算法并将我们的循环体移动到谓词中,这需要不少的样板,并迫使我们将逻辑远离它将要使用的地方。相比之下,其他一些语言,如Perl,提供了一个专用的“foreach”结构来自动化这个过程。BOOST_FOREACH对C++来说就是这样一种结构。它为我们迭代序列,使我们不必直接处理迭代器或编写谓词。
  • 格式化字符串:格式库提供了一种类型安全机制,用于根据类似 printf 的格式字符串格式化参数。
  • 函数:用于延迟调用或回调的函数对象包装器。
  • 函数类型:Boost.FunctionTypes 提供对函数、函数指针、函数引用和成员类型指针进行分类、分解和合成的功能。
  • 功能性的:Boost.Function 库包含一系列类模板,这些模板是函数对象包装器。
  • 功能/工厂:用于创建动态和静态对象的函数对象模板
  • Functional/Forward:允许泛型函数对象接受任意参数的适配器
  • 函数/重载函数:将不同的函数重载到单个函数对象中。
  • Fusion:用于处理元组的库,包括各种容器、算法等。
  • 几何:Boost.Geometry 库提供几何算法、图元和空间索引。
  • GIL:(C++14) 通用图像库
  • 图形:BGL 图形接口和图形组件是通用的,与标准模板库 (STL) 相同。
  • GraphParallel:PBGL 图形接口和图形组件是通用的,与标准模板库 (STL) 相同。
  • Hana:一个现代的C++元编程库。它提供了操作异构序列的高级算法,允许使用自然语法编写类型级计算,提供自省用户定义类型的工具等等。
  • 堆类型处理:优先级队列数据结构。
  • 直方图:快速的多维直方图,具有方便的C++界面14
  • HOF:C++的高阶函数
  • ICL:区间容器库、区间集和映射以及相关值的聚合
  • 标识类型:将类型包装在圆括号内,以便它们始终可以作为宏参数传递。
  • In Place Factory,Typed In Place Factory:具有可变参数列表的包含对象的通用就地构造。
  • 整数:提升整数标头和类的组织旨在利用 1999 C 标准中的 <stdint.h> 类型,而无需诉诸 1998 C++ 标准中的未定义行为。标头 <boost/cstdint.hpp> 使标准整数类型在命名空间 boost 中安全地可用,而无需在命名空间 std 中放置任何名称。
  • 进程间:共享内存、内存映射文件、进程共享互斥锁、条件变量、容器和分配器。
  • 间隔:将常用的算术函数扩展到数学间隔。
  • 侵入式:侵入式容器和算法。
  • IO:标准 I/O 库的实用程序。
  • Iostreams:Boost.IOStreams 提供了一个用于定义流、流缓冲区和 I/O 过滤器的框架。
  • 迭代器:Boost 迭代器库包含两部分。第一个是扩展 C++ 标准迭代器要求的概念系统。第二个是基于这些扩展概念构建迭代器的组件框架,包括几个有用的迭代器适配器。
  • JSON:C++ 中的 JSON 解析、序列化和 DOM 11
  • Lambda:在实际调用站点定义小型未命名函数对象等。
  • Lambda2:一个 C++14 lambda 库。
  • LEAF:用于 C++ 11 的轻量级错误处理库。
  • 词法转换:一般文字文本转换,例如 int 表示字符串,反之亦然。
  • 本地功能:程序在本地、在其他功能中、直接在需要它们的范围内运行。
  • 区域设置:为 C++ 提供本地化和 Unicode 处理工具。
  • Lockfree:无锁数据结构。
  • Log:日志库。
  • 数学:Boost.Math 包括数学领域的一些贡献:浮点实用程序、特定宽度浮点类型、数学常数、统计分布、特殊函数、寻根和函数最小化、多项式和有理函数、插值以及数值积分和微分。其中许多功能都经过模板化,以支持内置和扩展宽度类型(例如 Boost.Multiprecision)
  • 数学公因数:最大公约数和最小公倍数。
  • 数学/八角星库math.octonions:解决八角星问题
  • 数学四元数:四元数。
  • 数学/特殊函数:多种数学特殊函数。
  • 数学/统计分布:多种单变量统计分布和对它们进行操作的函数。
  • 成员函数:函数/对象/指针和成员函数的通用绑定器。
  • Meta State Machine:一个非常高性能的库,用于表达性 UML2 有限状态机。
  • Metaparse:一个用于生成编译时解析器的库,作为 C++ 编译过程的一部分解析嵌入式 DSL 代码
  • Min-Max:用于同时进行最小/最大和最小/最大元素计算的标准库扩展。
  • 移动:用于 C++03 和 C++11 编译器的可移植移动语义。
  • Mp11:C++11元编程库。
  • MPI:消息传递接口库,用于分布式内存并行应用程序编程。
  • MPL:Boost.MPL 库是一个通用的高级 C++ 模板元编程框架,包含编译时算法、序列和元函数。它提供了一个概念基础和一组广泛的强大而连贯的工具,使在当前语言中用C++进行显式元编程尽可能简单和愉快。
  • 多阵列:Boost.MultiArray 提供通用的 N 维数组概念定义和该接口的常见实现。
  • 多索引:Boost 多索引容器库提供了一个名为 multi_index_container 的类模板,该模板支持构建维护一个或多个具有不同排序和访问语义的索引的容器。
  • 多精度:用于浮点、整数和有理算术的扩展精度算术类型。
  • MySQL:基于 Boost.Asio 构建的 MySQL 客户端库。
  • Unicode编码下的字符串操作和文件I/ONowide:在 Windows 上使用 UTF-8 API 的标准库函数。
  • 数值转换:优化基于策略的数值转换。
  • Odeint:求解常微分方程。
  • 运算符:用于简化算术类和迭代器中运算符定义的模板。
  • 可选:值语义、类型安全包装器,用于表示给定类型的“可选”(或“可为空”)对象。可选对象可能包含也可能不包含基础类型的值。
  • 结果:确定性故障处理库部分模拟轻量级异常。
  • 解析和访问命令行参数和程序选项Parameter: Boost.Parameter Library - 编写按名称接受参数的函数。
  • 参数 Python 绑定:Boost.Parameter 库 Python 绑定。
  • 结构体和元组的反射机制:是C++的一个组件库,在C++17标准中正式加入,它提供了一种用于轻松、高效地操作结构体和元组的反射机制。
  • C++函数式编程库Phoenix:在实际调用站点定义小型未命名函数对象等。
  • 指针容器:用于存储堆分配的多态对象以简化 OO 编程的容器。
  • PolyCollection:多态对象的快速容器。
  • 多边形:Voronoi 图构造和布尔值/裁剪、调整大小/偏移等,适用于具有积分坐标的平面多边形。
  • 池:内存池管理。
  • Predef:此库根据它可以收集的 C、C++、目标 C 和目标 C++ 预定义宏或正式发布标头中定义的宏的信息定义一组编译器、体系结构、操作系统、库和其他版本号。
  • 预处理器:预处理器元编程工具,包括重复和递归。
  • 进程:用于以可移植方式创建进程的库。
  • 程序选项program_options:program_options库允许程序开发人员通过命令行和配置文件等常规方法从用户那里获取程序选项,即(名称、值)对。
  • 属性映射:定义将键对象映射到值对象的接口的概念。
  • 属性映射(并行):属性映射的并行扩展,用于并行图。
  • 属性树:特别适合存储配置数据的树数据结构。
  • 原型:用于特定领域的嵌入式语言的表达式模板库和编译器构造工具包。
  • Python:Boost Python 库是一个用于连接 Python 和 C++ 的框架。它允许您快速无缝地向 Python 公开 C++ 类、函数和对象,反之亦然,无需使用特殊工具——只需使用 C++ 编译器。
  • QVM:用于处理四元数向量和矩阵的通用C++库。
  • 随机:一个完整的随机数生成系统。
  • 范围:基于新迭代器概念构建的通用算法的新基础结构。
  • 比率:编译时间有理算术。C++ 11.
  • 有理数类:有理数类。
  • Redis:基于 Boost.Asio 构建的 Redis 异步客户端库。
  • Ref:用于传递对泛型函数的引用的实用程序库。
  • 正则表达式:正则表达式库。
  • 结果:确定函数调用表达式的类型。
  • 安全数字:保证正确的整数算术
  • 作用域退出:在作用域退出时执行任意代码。
  • 序列化:持久性和封送处理的序列化。
  • Signals2:托管信号和插槽回调实现(线程安全版本 2)。
  • Smart Ptr:智能指针类模板。
  • 排序:高性能模板化排序函数。
  • 精神:LL 解析器框架直接将解析器表示为内联 C++ 中的 EBNF 语法。
  • Spirit Classic:LL解析器框架在内联C++中直接将解析器表示为EBNF语法。
  • Spirit Repository:Spirit Repository 是一个社区工作,为 Qi 解析器和 Karma 生成器收集不同的可重用组件(原语、指令、语法等)。
  • 堆栈跟踪:收集、存储、复制和打印回溯。
  • 状态图:Boost.Statechart - 任意复杂的有限状态机可以在易于阅读和维护的C++代码中实现。
  • 静态断言:静态断言(编译时断言)。
  • 静态字符串:固定容量动态大小的字符串。
  • Stl_interfaces:用于定义迭代器、视图和容器的 C++14 及更高版本的 CRTP 模板。
  • String Algo:字符串算法库。
  • String Ref:字符串视图模板。
  • 字符串视图:字符串视图模板。
  • Swap:增强的通用交换功能。
  • 系统:可扩展的错误报告。
  • 测试:支持简单的程序测试、完整的单元测试和程序执行监视。
  • 线程:可移植的 C++ 多线程。C++11、C++14、C++17。
  • ThrowException:用于从 Boost 库引发异常的通用基础结构。
  • 计时器:事件计时器、进度计时器和进度显示类。
  • 分词器:将字符串或其他字符序列分解为一系列标记。
  • Tribool:3 态布尔类型库。
  • TTI:类型特征内省库。
  • 元组:简化函数的定义,返回多个值等。
  • 类型擦除:基于概念的运行时多态性。
  • 类型索引:运行时/编译时可复制类型信息。
  • 类型特征:类型基本属性的模板。
  • Typeof:运算符仿真的类型。
  • uBLAS:uBLAS 提供张量、矩阵和向量类以及基本的线性代数例程。支持多种密集、打包和稀疏存储方案。
  • 单位:零开销尺寸分析和单位/数量操作和转换。
  • Unordered:无序关联容器。
  • URL:C++ 中的 URL 解析 11
  • 实用程序:各种实用程序,例如 C++03 中的从成员基础习语和二进制文字。
  • Uuid:通用唯一标识符。
  • Value Initialized:统一语法值初始化的包装器,基于 David Abrahams 的原始想法。
  • 变体:安全、通用、基于堆栈的可区分联合容器。
  • Variant2:std::variant 的永无价值、强保证实现。
  • VMD:可变调宏数据库。
  • Wave:Boost.Wave库是符合标准的、高度可配置的C99 / C++预处理器功能的实现,打包在一个易于使用的迭代器界面后面。
  • Xpressive:可以写成字符串或表达式模板的正则表达式,并且可以利用上下文无关语法的强大功能递归地相互引用和引用它们自己。
  • YAP:C++ 14 及更高版本的表达式模板库。

STL源码分析:

下面列举一些csdn比较详细介绍链接:

C++ STL源码分析(一):STL体系结构和一些基础知识

libc++:

官方网站为:https://libcxx.llvm.org/

概述

libc++ 是 C++ 标准库的新实现,面向 C++11 和 以上。

  • 特点和目标

    • C++11 标准定义的正确性。

    • 快速执行。

    • 最少的内存使用。

    • 快速编译时间。

    • ABI 与 gcc 的 libstdc++ 兼容,以实现一些低级功能 例如异常对象、RTTI 和内存分配。

    • 广泛的单元测试。

  • 设计与实施:

    • 广泛的单元测试

    • 内部链接器模型可以转储/读取为文本格式

    • 其他链接功能可以作为“通行证”插入

    • 特定于操作系统和特定于 CPU 的代码被分解掉

libc++ 入门

  • Libc++ 19.0.0 (进行中) 发行说明
  • 使用 libc++
  • 构建 libc++
  • 测试 libc++
  • 为 libc++ 做贡献
  • 实现定义的行为
  • libc++ 中的模块
  • 强化模式
  • 放行程序
  • libc++ C++14 状态
  • libc++ C++17 状态
  • libc++ C++20 状态
  • libc++ C++23 状态
  • libc++ C++2c 状态
  • libc++ 格式状态
  • libc++ 并行 TS 状态 (N4808)
  • libc++ 并行 STL 状态
  • libc++ 范围状态
  • libc++ 宇宙飞船操作员状态 (operator<=>)
  • libc++ Zip 状态 (P2321R2)

现状

在它最初推出后,很多人都问“为什么要开始一个新的 图书馆,而不是为现有图书馆做出贡献?(就像 Apache 的一样 libstdcxx、GNU 的 libstdc++、STLport 等)。有很多贡献 原因,但一些主要原因是:

  • 根据多年的经验(包括实施标准 库之前),我们已经学到了很多关于实现的东西 需要ABI破损和根本性改变的标准容器 如何实施它们。例如,人们普遍认为 使用“短字符串优化”而不是 使用写入时复制 (COW) 是多核的卓越方法 机器(特别是在具有右值引用的 C++11 中)。打破 ABI 与旧版本库的兼容性是 确定对实现绩效目标至关重要 libc++。

  • 主线 libstdc++ 已切换到 GPL3,这是开发人员的许可证 的 libc++ 不能使用。libstdc++ 4.2(最后一个 GPL2 版本)可能是 独立扩展以支持 C++ 11,但这将是 代码库(对于一个项目来说,这通常被认为比开始一个新的更糟糕 独立一)。libstdc++ 的另一个问题是它紧紧地 与 G++ 开发集成,往往与 G++ 的匹配版本。

  • STLport 和 Apache libstdcxx 库是另外两个流行的库 候选者,但两者都缺乏 C++11 支持。我们的经验(以及 libstdc++ 开发人员的经验)是添加对 C++ 11 的支持(在 特定的右值引用和仅移动类型)需要更改 几乎每个类和函数,基本上都相当于重写。 面对重写,我们决定从头开始,评估每一个 基于经验的第一性原理的设计决策。 此外,这两个项目显然都被放弃了:STLport 5.2.1 是 08 年 10 月发布,STDCXX 4.2.1 于 08 年 5 月发布。

平台和编译器支持

Libc++ 旨在支持实现 C++11 标准的常见编译器。为了击中 在用户稳定性和维护成本、测试覆盖率和开发之间取得良好平衡 速度,随着新编译器的发布,libc++ 会放弃对旧编译器的支持。

编译器

版本

限制

支持政策

16、17、18-git

每个 LLVM 的发布页面和开发版本的最新两个稳定版本

苹果锺

15

每个 Xcode 发布页面的最新稳定版本

打开 XL

17.1 (AIX)

每个 Open XL 文档页面的最新稳定版本

海湾合作委员会

13

仅在 C++ 11 或更高版本中

根据 GCC 的发布页面提供最新的稳定版本

Libc++ 还支持常见的平台和架构:

目标平台

目标体系结构

笔记

macOS 10.13+

i386、x86_64、arm64

FreeBSD 12+ 版

i386,x86_64,臂

Linux操作系统

i386、x86_64、臂、arm64

官方仅支持 glibc-2.24 及更高版本,不支持其他 libc

安卓 5.0+

i386、x86_64、臂、arm64

窗户

i386、x86_64

无论是 MSVC 还是 MinGW 风格环境,MSVC 环境中的 ABI 都不稳定

AIX 7.2TL5+

powerpc、powerpc64

嵌入式 (picolibc)

手臂

一般来说,libc++ 应该可以在任何提供相当完整的平台上工作 C 标准库。也可以关闭库的某些部分以供使用 提供不完整支持的系统。

但是,libc++ 旨在提供 C++ 标准的高质量实现 图书馆,尤其是在正确性方面。因此,我们的目标是实现测试覆盖率 对于我们声称支持的所有平台和编译器。如果平台或编译器 此处未列出,因此不受官方支持。它可能碰巧起作用,并且 在实践中,已知该库可以在此处未列出的某些平台上工作,但是 我们不做任何保证。如果您想要您的编译器和/或平台 要获得正式支持并在此处列出,请与 libc++ 团队合作将 对您的配置进行向上测试。

C++ 方言支持

  • C++11 - 完成

  • C++14 - 完成

  • C++17 - 进行中

  • C++20 - 进行中

  • C++23 - 进行中

  • C++2c - 进行中

  • C++ 功能测试宏状态

注意事项和已知问题

此列表包含 libc++ 的已知问题

  • 不支持使用 构建 libc++。然而 支持与它链接。-fno-rtti-fno-rtti

可以在此处找到当前未解决的 libc++ 错误的完整列表。

设计文档

  • Libc++ ABI 稳定性
  • 设计
  • 捕获标头中的配置信息
  • 实验特性
  • 扩展的 C++03 支持
  • 功能测试宏
  • 文件时间类型
  • 标头删除策略
  • 政策
  • PSTL 集成
  • 线程支持 API
  • 启用 std::unique_ptr [[clang::trivial_abi]]
  • 未指定行为随机化
  • 符号可见性宏
  • 时区支持

构建机器人和测试覆盖率

  • Github Actions CI 管道

  • Buildkite CI 流水线

  • LLVM Buildbot 构建器

  • 添加新的 CI 作业

参与其中

首先,请查看我们的开发者政策和 LLVM 入门。

错误报告

如果您认为您在 libc++ 中发现了一个错误,请使用 LLVM 错误跟踪器。如果您不确定,则 可以在 libcxx 论坛或 IRC 上寻求支持。

补丁

如果您想为 libc++ 贡献补丁,请首先查看我们关于贡献的文档。

讨论和问题

将讨论和问题发送到 libcxx 论坛。

快速链接

  • LLVM 主页

  • libc++abi 主页

  • LLVM 错误跟踪器

  • libcxx-commits 邮件列表

  • libcxx 论坛

  • 浏览 libc++ 源代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/272871.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(黑马出品_03)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

&#xff08;黑马出品_03&#xff09;SpringCloudRabbitMQDockerRedis搜索分布式 微服务技术Docker 今日目标1.初识Docker1.1.什么是Docker1.1.1.应用部署的环境问题1.1.2.Docker解决依赖兼容问题1.1.3.Docker解决操作系统环境差异1.1.4.小结 1.2…

Java共享问题 、synchronized 线程安全分析、Monitor、wait/notify

文章目录 1.共享带来的问题1.1 临界区 Critical Section1.2 竞态条件 Race Condition 2. synchronized语法及理解2.1 方法上的 synchronized 3.变量的线程安全分析3.1.成员变量和静态变量是否线程安全&#xff1f;3.2.局部变量是否线程安全&#xff1f;3.2.1 局部变量线程安全分…

ElasticSearch架构介绍及原理解析

Elasticsearch 是一个高度可扩展的开源全文搜索和分析引擎&#xff0c;用于处理大量的数据。它是由 Elasticsearch BV 公司开发&#xff0c;并且是用 Java 语言编写的。Elasticsearch 基于 Lucene 搜索引擎&#xff0c;提供了 RESTful API&#xff0c;允许你通过 JSON 格式的请…

DFS例题(n皇后问题)C++(Acwing)

代码&#xff1a; #include <iostream>using namespace std;const int N 20;int n; char g[N][N]; bool col[N], dg[N], udg[N];void dfs(int u) {if(u n){for(int i 0; i < n; i) puts(g[i]);puts("");return; }for(int i 0; i < n…

数字化审计智慧

简析内部审计数字化转型的方法和路径 内部审计是一种独立的、客观的确认和咨询活动&#xff0c;包括鉴证、识别和分析问题以及提供管理建议和解决方案。狭义的数字化转型是指将企业经营管理和业务操作的各种行为、状态和结果用数字的形式来记录和存储&#xff0c;据此再对数据进…

【xv6操作系统】Lab systems calls

一、实验前须知 阅读 xv6 文档的第 2 章和第 4 章的 4.3 节和 4.4 节以及相关源文件&#xff1a; 系统调用的用户空间代码在 user/user.h 和 user/usys.pl 中。 内核空间代码在 kernel/syscall.h 和 kernel/syscall.c 中。 与进程相关的代码在 kernel/proc.h 和 kernel/proc.c…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:ImageSpan)

Text组件的子组件&#xff0c;用于显示行内图片。 说明&#xff1a; 该组件从API Version 10开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口 ImageSpan(value: ResourceStr | PixelMap) 参数&#xff1a; 参数名参数类…

大模型学习过程记录

一、基础知识 自然语言处理&#xff1a;能够让计算理解人类的语言。 检测计算机是否智能化的方法&#xff1a;图灵测试 自然语言处理相关基础点&#xff1a; 基础点1——词表示问题&#xff1a; 1、词表示&#xff1a;把自然语言中最基本的语言单位——词&#xff0c;将它转…

两天学会微服务网关Gateway-Gateway网关限流

锋哥原创的微服务网关Gateway视频教程&#xff1a; Gateway微服务网关视频教程&#xff08;无废话版&#xff09;_哔哩哔哩_bilibiliGateway微服务网关视频教程&#xff08;无废话版&#xff09;共计17条视频&#xff0c;包括&#xff1a;1_Gateway简介、2_Gateway工作原理、3…

python基础——条件判断和循环【if,while,for,range】

&#x1f4dd;前言&#xff1a; 这篇文章主要讲解一下条件判断语句if和循环语句while&#xff0c;for在python中需要注意的地方。 建议已有一定了解&#xff08;对语句的执行逻辑清楚&#xff09;的读者观看&#xff0c;如果对条件判断和循环的执行逻辑不太清楚&#xff0c;也可…

win11家庭版docker和milvus

docker 1、官网下载docker文件Get Started | Docker&#xff0c;选择download for windows下载。 2、双击打开下载好的文件Docker Desktop Installer.exe&#xff0c;add shortcut to desktop选择√代表同意添加快捷键到桌面&#xff0c;如果不勾选就说明不创建快捷键&#x…

阿里云服务器多少钱1个月?2024年最新报价5元一个月

阿里云服务器一个月多少钱&#xff1f;最便宜5元1个月。阿里云轻量应用服务器2核2G3M配置61元一年&#xff0c;折合5元一个月&#xff0c;2核4G服务器30元3个月&#xff0c;2核2G3M带宽服务器99元12个月&#xff0c;轻量应用服务器2核4G4M带宽165元12个月&#xff0c;4核16G服务…

跨平台大小端判断与主机节序转网络字节序使用

1.macOS : 默认使用小端 ,高位使用高地址,转换为网络字节序成大端 #include <iostream> #include <arpa/inet.h> int main() {//大小端判断union{short s;char c[sizeof(short)];}un;un.s = 0x0102;printf("低地址:%d,高地址:%d\n",un.c[0],un.c[1]);if …

安卓部分手机使用webview加载链接后白屏(Android低版本会出现的问题)

前言 大爷&#xff1a;小伙我这手机怎么打开你们呢这个是白屏什么都不显示。 大娘&#xff1a;小伙我这也是打开你们呢这功能&#xff0c;就是一个白屏什么也没有&#xff0c;你们呢的应用不会有病毒吧。 小伙&#xff1a;我的手机也正常&#xff1b; 同事&#xff1a;我的也正…

【Flink】Flink 的八种分区策略(源码解读)

Flink 的八种分区策略&#xff08;源码解读&#xff09; 1.继承关系图1.1 接口&#xff1a;ChannelSelector1.2 抽象类&#xff1a;StreamPartitioner1.3 继承关系图 2.分区策略2.1 GlobalPartitioner2.2 ShufflePartitioner2.3 BroadcastPartitioner2.4 RebalancePartitioner2…

全栈的自我修养 ———— css中常用的布局方法flex和grid

在项目里面有两种常用的主要布局:flex和grid布局&#xff08;b站布局&#xff09;&#xff0c;今天分享给大家这两种的常用的简单方法&#xff01; 一、flex布局1、原图2、中心对齐3、主轴末尾或者开始对其4、互相间隔 二、grid布局1、基本效果2、加间隔3、放大某一个元素 一、…

Linux第74步_“设备树”下的LED驱动

使用新字符设备驱动的一般模板&#xff0c;以及设备树&#xff0c;驱动LED。 1、添加“stm32mp1_led”节点 打开虚拟机上“VSCode”&#xff0c;点击“文件”&#xff0c;点击“打开文件夹”&#xff0c;点击“zgq”&#xff0c;点击“linux”&#xff0c;点击“atk-mp1”&am…

基于GAN对抗网进行图像修复

一、简介 使用PyTorch实现的生成对抗网络&#xff08;GAN&#xff09;模型&#xff0c;包括编码器&#xff08;Encoder&#xff09;、解码器&#xff08;Decoder&#xff09;、生成器&#xff08;ResnetGenerator&#xff09;和判别器&#xff08;Discriminator&#xff09;。…

LCR 112. 矩阵中的最长递增路径【leetcode】/dfs+记忆化搜索

LCR 112. 矩阵中的最长递增路径 给定一个 m x n 整数矩阵 matrix &#xff0c;找出其中 最长递增路径 的长度。 对于每个单元格&#xff0c;你可以往上&#xff0c;下&#xff0c;左&#xff0c;右四个方向移动。 不能 在 对角线 方向上移动或移动到 边界外&#xff08;即不允…

前端覆盖率报告生成

前端精准测试是精准测试体系的一部分&#xff0c;但是由于前端项目比较灵活&#xff0c;各种框架&#xff0c;脚手架再加上开发同学写的不够规范&#xff0c;所以投入产出比较低&#xff0c;这部分内容在网上的资料也比较少。为了完善我们的精准测试体系&#xff0c;今年做了前…