SD-FeatureTest:特性测试宏和策略

功能测试宏和策略

文档号 SD-FeatureTest
日期 2025-06-03
项目 编程语言 C++
受众
回复至

1 方法解释和原理

C++ 标准化的创新步伐使得实现的长期稳定性不太可能。功能被添加到语言中是因为程序员希望使用这些功能。功能被添加到标准(工作草案)中,因为这些功能变得明确。在许多情况下,一个功能在标准正式引入它之前或之后很久就被添加到实现中。

这个过程使得想要使用某个功能的程序员很难知道它在任何给定实现中是否可用。实现很少直接从一个正式的标准修订版跳到下一个;实现过程通常以较小的步骤进行。因此,测试特定标准修订版(例如,通过检查 __cplusplus 宏的值)通常会给出错误的答案。实现者通常不希望在所有功能都实现之前就声称完全符合某个标准修订版。这使得程序员没有可移植的方法来确定哪些功能实际上对他们可用。

程序通常可以以特定于单个实现的方式确定该实现支持哪些功能;但其方法通常文档不全、随意,有时甚至复杂——尤其是当功能的可用性由调用选项控制时。在单个源代码库中为各种实现进行此确定是复杂且容易出错的。

1.1 功能测试宏之前的现状

以下代码试图确定当前实现中是否支持右值引用

#ifndef __USE_RVALUE_REFERENCES
  #if (__GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ >= 3) || \
      _MSC_VER >= 1600
    #if __EDG_VERSION__ > 0
      #define __USE_RVALUE_REFERENCES (__EDG_VERSION__ >= 410)
    #else
      #define __USE_RVALUE_REFERENCES 1
    #endif
  #elif __clang__
    #define __USE_RVALUE_REFERENCES __has_feature(cxx_rvalue_references)
  #else
    #define __USE_RVALUE_REFERENCES 0
  #endif
#endif

首先,检查 GNU 和 Microsoft 的版本号是否足够高。但随后检查 EDG 的版本号,因为该前端也兼容这两种编译器,并定义了宏来指示(声称的)兼容性。如果该功能未在指定的 EDG 版本中实现,则假定该功能不可用——即使 EDG 的客户有可能在 EDG 之前实现该功能。

幸运的是,Clang 有办法专门测试特定功能是否存在。但不幸的是,用于此类测试的函数调用式语法不适用于标准预处理器,因此这个出色的新功能最终为混合增加了自己的复杂性。

另请注意,此代码只是实际解决方案的开始。一个完整的解决方案需要考虑更多的编译器,以及特定于各种编译器的命令行选项设置。

1.2 建议解决方案的特点

为了保留实现者按照对自身及其客户最有意义的顺序添加功能的自由,实现者应通过添加与该功能对应的宏定义来指示每个单独功能的可用性。

重要说明:通过建议使用这些宏,WG21 并非使任何功能成为可选;相关功能测试宏的定义缺失并不意味着缺少某个功能的实现符合要求该功能的标准。但是,如果实现者和程序员遵循这些建议,则代码在实际实现之间的可移植性应该会得到改善。

首先,一个功能由WG21文件中指定它并将其引入标准工作草案的论文来标识。并非每篇论文都引入了值得功能测试宏的新功能,但每篇不仅仅是问题解决方案集合的论文都被视为候选;例外情况需要明确说明理由。

对于 C++14,功能测试宏名称通常由论文标题中的某些单词组合而成。未来,希望每篇论文都包含自己关于功能测试宏名称的建议。

为功能测试宏指定的值基于该功能被投票进入工作草案的年份和月份。如果某个功能随后发生重大变化,但仍可认为是相同的功能,则宏的值会更改以指示该功能的规范“修订级别”。然而,在大多数情况下,预期可以通过任何非零宏值的存在来确定功能的存在;例如

template<typename T>
struct use_empty_base_opt :
    std::integral_constant<bool,
        std::is_empty<T>::value
#if __cpp_lib_is_final
        && !std::is_final<T>::value
#endif
    >
{ };

为了避免用户命名空间,语言功能宏的名称前缀为 __cpp_;对于库功能,前缀为 __cpp_lib_。不引入新头文件的库功能预计由实现该功能的头文件定义。

1.3 示例

根据功能可用性选择更高效的编译时实现

#if __cpp_variadic_using
// can use the compile-time efficient, flat inheritance
template<typename ...T> struct Callable : T... {
  using T::operator() ...;
};
#else
// fall-back to linear recursion for older compilers
template<typename ...T> struct Callable;
template<typename T, typename ...U>
struct Callable<T, U...> : T, Callable<U...> {
  using T::operator();
  using Callable<U...>::operator();
};
template<typename T> struct Callable<T> : T {
  using T::operator();
};
template<> struct Callable<> {};
#endif

同理

#if __cpp_fold_expressions
template<typename... T>
  auto sum(T... args)  { return (args + ...); }
#else
auto sum() { return 0; }
template<typename T>
  auto sum(T t) { return t; }
template(typename T, typename... Ts)
  auto sum(T t, Ts... ts) { return t + sum(ts...); }
#endif

根据功能可用性选择更高效的运行时实现

void update(std::set<X>& set, const X& elem, int val)
{
    auto pos = set.find(elem);
    if (pos == set.end())
        return;
#if __cpp_lib_node_extract
    auto next = std::next(pos);
    auto x = set.extract(pos);
    x.value().update(val);
    set.insert(next, std::move(x));
#else
    X tmp = *pos;
    pos = set.erase(pos);
    tmp.update(val);
    set.insert(pos, std::move(tmp));
#endif
}

在某些情况下,功能测试宏的值可能会随着底层功能的变化而改变。为了更容易地跟踪每个功能的演变,本文档中的表格按宏名称分组——每行包含每个可能的值及其相关的提案。

根据__cpp_static_assert有条件地实现某个功能。

#if __cpp_static_assert
#  if __cpp_static_assert > 201400
#    define Static_Assert(cond) static_assert(cond)
#  else
#    define Static_Assert(cond) static_assert(cond, #cond)
#  endif
#  define Static_Assert_Msg(cond, msg) static_assert(cond, msg)
#else
#  define Static_Assert(cond)
#  define Static_Assert_Msg(cond, msg)
#endif

属性也可能随时间改变语义,这就是为什么下面描述的__has_cpp_attribute工具评估为一个值而不是简单的10。这允许用户根据__has_cpp_attribute(nodiscard)有条件地提供nodiscard版本

#if __has_cpp_attribute(nodiscard) >= 201907
   // nodiscard has a reason and can
   // be applied to constructors
#  define NODISCARD(msg)      [[nodiscard(msg)]]
#  define NODISCARD_CTOR(msg) [[nodiscard(msg)]]
#elif __has_cpp_attribute(nodiscard) >= 201603
   // nodiscard doesn't have a reason, nor can
#  define NODISCARD(msg)      [[nodiscard]]
#  define NODISCARD_CTOR(msg)
#else
   // nodiscard doesn't exist at all yet
#  define NODISCARD(msg)
#  define NODISCARD_CTOR(msg)
#endif

2 建议

2.1 引言

为了提高各种C++标准部分实现之间的可移植性,WG21(ISO C++编程语言技术委员会)建议实现者和程序员遵循本文档中关于功能测试宏的指导方针。

提供新标准功能的实现者应在功能可用的相同情况下(例如,考虑相关命令行选项)定义具有推荐名称和值的宏,以指示对该功能的支持。

希望确定某个功能在实现中是否可用的程序员应根据具有推荐名称的宏的状态进行判断。(缺少经过测试的功能可能导致程序功能减少,或者相关功能可能以不同方式提供。严格依赖某个功能支持的程序可以尝试无条件使用该功能;据推测,在缺少必要支持的实现上,翻译将失败。因此,如果功能测试宏最有用的目的是在功能不可用时控制 #error 指令的包含,则认为这不足以成为该宏的理由。请注意,测试宏对某个功能的有用性与该功能本身的有用性完全无关。)

2.2 测试头文件是否存在:__has_include

C++ 程序无法直接、可靠和可移植地确定库头文件是否可用于包含。有条件地包含头文件需要使用配置宏,其设置可以通过构建时的配置测试过程(可靠,但可移植性较差)或通过其他方式(通常不可靠或不可移植)确定。

为了解决这个普遍问题,WG21 建议程序员使用 __has_include 功能。

2.2.1 语法

h-预处理-标记:
    除 > 之外的任何 预处理-标记

h-pp-标记:
    h-预处理-标记
    h-pp-标记 h-预处理-标记
has-include-表达式:
    __has_include ( 头文件名 )
    __has_include ( 字符串字面量 )
    __has_include ( < h-pp-标记 > )

2.2.2 语义

has-include-expression 的第一种形式中,括号中的 header-name 标记不受宏展开的影响。只有在第一种形式不匹配时才考虑第二种和第三种形式,并且预处理标记的处理方式与正常文本中相同。

has-include-expression 只能出现在 #if#elif 指令的控制常量表达式中 ([cpp.cond] 16.1)。在评估此类表达式之前,会搜索由其中包含的每个 has-include-expression 中的括号括起来的预处理标记序列标识的源文件,就像该预处理标记序列是 #include 指令中的 pp-tokens 一样,除了不执行进一步的宏展开。如果此类指令不满足 #include 指令的语法要求,则程序格式错误。如果源文件搜索成功,has-include-expression 将被 pp-number 1 替换;如果搜索失败,则替换为 pp-number 0

#ifdef#ifndef 指令,以及定义的条件包含运算符,应将 __has_include 视为已定义宏的名称。标识符 __has_include 不应出现在本节未提及的任何上下文中。

2.2.3 示例

这演示了一种仅在可用时使用库可选功能的方法。请注意,__has_include(<optional>) 成功是不够的,因为在许多工具链上,头文件可能存在于安装中,但其内容会根据编译标志进行保护。例如,以下代码

#ifdef __has_include
#if __has_include(<optional>)
#include <optional>
std::optional<int> o;
#endif
#endif
int main(){ }

仍将无法使用 g++ -std=c++14(使用 libstdc++)编译。

因此,我们需要这样做

#ifdef __has_include
#  if __has_include(<optional>)
#    include <optional>
#    if __cpp_lib_optional >= 201606
#      define have_optional 1
#    endif
#  elif __has_include(<experimental/optional>)
#    include <experimental/optional>
#    if __cpp_lib_experimental_optional >= 201400
#      define have_optional 1
#      define experimental_optional 1
#    endif
#endif

#ifndef have_optional
#    define have_optional 0
#endif

此外,<version> 头文件 [P0754R2] 是一个轻量级头文件,它定义了所有标准库功能测试宏。另一种实现可以是

#ifndef __has_include
#  define __has_include(x) 0
#endif

#if __has_include(<version>)
#  include <version>
#elif __has_include(<optional>)
#  include <optional>
#endif
#if __cpp_lib_optional >= 201606
#  define have_optional 1
#else
#  define have_optional 0
#endif

2.3 测试属性是否存在:__has_cpp_attribute

C++ 程序无法直接、可靠且可移植地确定标准或特定于供应商的属性是否可用。测试属性支持通常需要复杂的宏逻辑,如上文针对一般语言功能所说明的那样。

为了解决这个普遍问题,WG21 建议程序员使用 __has_cpp_attribute 功能。

2.3.1 语法

has-attribute-expression:
    __has_cpp_attribute ( attribute-token )

2.3.2 语义

一个 has-attribute-expression 只能出现在 #if#elif 指令的控制常量表达式中 ([cpp.cond] 16.1)。如果实现支持具有指定名称的属性,has-attribute-expression 将被替换为非零的 pp-number,否则替换为 pp-number 0

对于标准属性,__has_cpp_attribute 宏的值基于该属性被投票进入工作草案的年份和月份。如果属性是供应商特定的,则该值是实现定义的。然而,在大多数情况下,预期可以通过任何非零结果检测到属性的可用性。

#ifdef#ifndef 指令,以及定义的条件包含运算符,应将 __has_cpp_attribute 视为已定义宏的名称。标识符 __has_cpp_attribute 不应出现在本节未提及的任何上下文中。

2.3.3 示例

这演示了仅在可用时使用属性 [[deprecated]] 的方法。

#ifndef __has_cpp_attribute
# define __has_cpp_attribute(x) 0
#endif
#if __has_cpp_attribute(deprecated)
# define ATTR_DEPRECATED(msg) [[deprecated(msg)]]
#else
# define ATTR_DEPRECATED(msg)
#endif

3 策略

SG-10 已采纳多项与我们确定和命名宏的标准实践相关的策略。

3.1 constexpr

对于语言,我们将有一个单独的 __cpp_constexpr 宏。每次我们在语言中扩展 constexpr 时,它都会被提升。对于库,我们将为重要的特殊功能添加特定的功能测试宏。否则,对于那些我们只是将 constexpr 添加到库中更多事物的情况,我们将为每个头文件提供一个专用的测试宏,并且每次更改时只提升该头文件特定的宏。该宏将命名为 __cpp_lib_constexpr_HEADER(除了少数现有的数组和算法宏,它们的名称略有不同)。

摘自 [P1902R1]

3.2 带有库组件的语言功能

在某些情况下,一个功能需要两个宏,一个用于语言,一个用于库。例如,除非编译器支持该功能,否则库不会定义其三向比较操作。

对于最终用户,建议他们只测试库宏,因为只有当语言宏也为真时,库宏才为真。因此,语言宏包含“impl”以将其与预计由库设置的更通用版本区分开来。

请注意,最初 SG10 建议库版本的宏不包含通常的 _lib 部分,但 LWG 对库宏(在使用前需要头文件)不包含 _lib 的不一致性感到不适。

另请注意,SG10 最初建议核心功能测试包含 _lang,但 LWG 希望有更清晰地暗示该宏是用于核心功能而非供最终用户使用的内容。他们建议改用 _impl

摘自 [P1353R0]

4 功能测试宏表

以下是标准中的所有功能测试宏,按语言宏、属性宏和库宏划分,然后按名称排序。每个宏将包含其可能的取值列表以及在实现定义该宏为特定取值之前需要实现的论文。

请注意,同一篇论文可能会引入或更新多个功能测试宏。给定值可能需要多篇论文。论文也可能*移除*某个功能测试宏,在这种情况下,其值将被指定为 已删除

4.1 语言功能测试宏

所有语言宏都是预定义的(即在进行检查之前无需包含任何头文件)。

在某些情况下,一个功能需要两个宏:一个用于语言,一个用于库。例如,除非编译器支持该功能,否则库不会定义其三向比较运算符。在这些情况下,建议最终用户只测试库宏。那些旨在由库检查的核心语言功能测试宏被拼写为 __cpp_impl_*

论文
__cpp_deleted_function 202403 [P2573R2] = delete(“应该有理由”);
__cpp_aggregate_bases 201603 [P0017R1] 聚合初始化扩展
__cpp_aggregate_nsdmi 201304 [N3653] 成员初始化器和聚合
__cpp_aggregate_paren_init 201902 [P0960R3] 允许从带括号的值列表初始化聚合
__cpp_alias_templates 200704 [N2258] 模板别名
__cpp_aligned_new 201606 [P0035R4] 过对齐数据的动态内存分配
__cpp_attributes 200809 [N2761] C++ 中属性支持的进展(修订版 6)
__cpp_binary_literals 201304 [N3472] C++ 核心语言中的二进制字面量
__cpp_capture_star_this 201603 [P0018R3] Lambda 按值捕获 *this[=,*this]
__cpp_char8_t 201811 [P0482R6] char8_t:用于 UTF-8 字符和字符串的类型(修订版 6)
202207 [P2513R3] char8_t 兼容性和可移植性修复
__cpp_concepts 201707 [P0734R0] 措辞文档,C++ 概念扩展
201811 [P1084R2] 今时今日的返回类型要求已不足
201907 [P1452R2] 关于返回类型要求非统一语义的论文
202002 [P0848R3] 有条件微不足道的特殊成员函数
__cpp_conditional_explicit 201806 [P0892R2] explicit(bool)
__cpp_consteval 201811 [P1073R3] 即时函数
202211 [P2564R3] consteval 需要向上传播
__cpp_constexpr 200704 [N2235] 广义常量表达式——修订版 5
201304 [N3652] 放松 constexpr 函数的约束/constexpr 成员函数和隐式 const
201603 [P0170R1] Constexpr Lambda 的措辞
201806 [P1064R0] 允许在常量表达式中进行虚函数调用
201811 [P1002R1] constexpr 函数中的 try-catch 块
[P1327R1] 允许 dynamic_cast、多态 typeid 在常量表达式中
201907 [P1331R2] 允许在 constexpr 上下文中进行微不足道的默认初始化
[P1668R1] 通过允许 constexpr 函数中的未评估内联汇编来启用 constexpr 本征函数
202002 [P1330R0] 更改 union 在 constexpr 内部的活跃成员
202110 [P2242R3] constexpr 函数中的非字面量变量(以及标签和 goto)
202207 [P2448R2] 放松某些 constexpr 限制
202211 [P2647R1] 允许 constexpr 函数中的静态 constexpr 变量
202306 [P2738R1] constexpr 从 void* 转换:迈向 constexpr 类型擦除
202406 [P2747R2] constexpr placement new
__cpp_constexpr_dynamic_alloc 201907 [P0784R7] 更多 constexpr 容器
__cpp_constexpr_exceptions 202411 [P3068R6] 允许在常量求值中抛出异常
__cpp_constexpr_in_decltype 201711 [P0859R0] 核心问题 1581:constexpr 成员函数何时定义?
__cpp_constinit 201907 [P1143R2] 添加 constinit 关键字
__cpp_contracts 202502 [P2900R14] C++ 契约
__cpp_decltype 200707 [N2343] Decltype(修订版 7):建议措辞
__cpp_decltype_auto 201304 [N3638] 普通函数的返回类型推断
__cpp_deduction_guides 201606 [P0091R3] 类模板的模板参数推导(修订版 6)
201611 [P0512R0] 类模板参数推导杂项 NB 解决方案和问题
201703 [P0620R0] 草拟类模板参数推导问题
201907 [P1814R0] 别名模板的类模板参数推导措辞
[P1816R0] 聚合的类模板参数推导措辞
__cpp_delegating_constructors 200604 [N1986] 委托构造函数(修订版 3)
__cpp_designated_initializers 201707 [P0329R4] 指定初始化措辞
__cpp_enumerator_attributes 201411 [N4266] 命名空间和枚举器属性
__cpp_exceptions 199711 异常处理
__cpp_explicit_this_parameter 202110 [P0847R7] 推断 this
__cpp_fold_expressions 201411 [N4295] 折叠表达式
201603 [P0036R0] 一元折叠和空参数包(修订版 1)
__cpp_generic_lambdas 201304 [N3649] 泛型(多态)Lambda 表达式(修订版 3)
201707 [P0428R2] 泛型 Lambda 的常见模板语法
__cpp_guaranteed_copy_elision 201606 [P0135R1] 通过简化值类别保证复制省略的措辞
__cpp_hex_float 201603 [P0245R1] C++ 十六进制浮点字面量
__cpp_if_consteval 202106 [P1938R3] if consteval
__cpp_if_constexpr 201606 [P0292R2] constexpr if:一种略有不同的语法
__cpp_impl_coroutine 201902 [P0912R5] 将 Coroutines TS 合并到 C++20 工作草案中
[LWG3393] 协程的缺失/不正确功能测试宏
__cpp_impl_destroying_delete 201806 [P0722R3] 可变大小类的有效大小删除
__cpp_impl_three_way_comparison 201711 [P0515R3] 一致性比较
[P0768R1] 飞船(比较)运算符的库支持
201902 [P1185R2] <=> != ==
201907 [P1630R1] 飞船需要调整
__cpp_implicit_move 202207 [P2266R3] 更简单的隐式移动
__cpp_inheriting_constructors 200802 [N2540] 继承构造函数(修订版 5)
201511 [P0136R1] 重写继承构造函数(核心问题 1941 等)
__cpp_init_captures 201304 [N3648] 广义 Lambda 捕获的措辞更改
201803 [P0780R2] 允许在 lambda init-capture 中进行包展开
__cpp_initializer_lists 200806 [N2672] 初始化列表建议措辞
__cpp_inline_variables 201606 [P0386R2] 内联变量
__cpp_lambdas 200907 [N2927] C++0x Lambdas 的新措辞(修订版 2)
__cpp_modules 201907 [P1103R3] 合并模块
[P1811R0] 放宽重新定义限制以提高再导出健壮性
__cpp_multidimensional_subscript 202110 [P2128R6] 多维下标运算符
202211 [P2589R1] 静态 operator[]
__cpp_named_character_escapes 202207 [P2071R2] 命名通用字符转义
__cpp_namespace_attributes 201411 [N4266] 命名空间和枚举器属性
__cpp_noexcept_function_type 201510 [P0012R1] 使异常规范成为类型系统的一部分,版本 5
__cpp_nontype_template_args 201411 [N4268] 允许所有非类型模板参数的常量求值
201911 [P1907R1] 非类型模板参数的不一致性
__cpp_nontype_template_parameter_auto 201606 [P0127R2] 使用 auto 声明非类型模板参数
__cpp_nontype_template_parameter_class 201806 [P0732R2] 非类型模板参数中的类类型
已删除 [P1907R1] 非类型模板参数的不一致性
__cpp_nsdmi 200809 [N2756] 非静态数据成员初始化器
__cpp_pack_indexing 202311 [P2662R3] 包索引
__cpp_placeholder_variables 202306 [P2169R4] 一个没有名字的好占位符
__cpp_range_based_for 200907 [N2930] 基于范围的 for 循环措辞(不含 Concepts)
201603 [P0184R0] 泛化基于范围的 For 循环
202211 [P2644R1] 修复损坏的基于范围的 for 循环修订版 1
[P2718R0] P2644R1 修复基于范围的 for 循环的措辞
[CWG2659] range-for 循环中生命周期延长的功能测试宏缺失
__cpp_raw_strings 200710 [N2442] 原始字符串和 Unicode 字符串字面量;统一提案(修订版 2)
__cpp_ref_qualifiers 200710 [N2439] 将移动语义扩展到 *this(修订措辞)
__cpp_return_type_deduction 201304 [N3638] 普通函数的返回类型推断
__cpp_rtti 199711 运行时类型识别
__cpp_rvalue_references 200610 [N2118] 在 C++ 语言中添加右值引用的提案:建议措辞:修订版 3
__cpp_size_t_suffix 202011 [P0330R8] (signed) size_t 的字面量后缀
__cpp_sized_deallocation 201309 [N3778] C++ 大小化解除分配
__cpp_static_assert 200410 [N1720] 将静态断言添加到核心语言的提案(修订版 3)
201411 [N3928] 扩展 static_assert,v2
202306 [P2741R3] 用户生成的 static_assert 消息
__cpp_static_call_operator 202207 [P1169R4] 静态 operator()
__cpp_structured_bindings 201606 [P0217R3] 结构化绑定建议措辞
202403 [P0609R3] 结构化绑定的属性
202411 [P1061R10] 结构化绑定可以引入一个包
__cpp_template_parameters 202502 [P2841R7] 概念和变量模板模板参数
__cpp_template_template_args 201611 [P0522R0] DR:模板模板参数的匹配排除兼容模板
__cpp_threadsafe_static_init 200806 [N2660] 动态初始化和并发销毁
__cpp_trivial_relocatability 202502 [P2786R13] C++26 的微不足道的重新定位能力
__cpp_trivial_union 202502 [P3074R7] 微不足道的 union(曾是 std::uninitialized<T>
__cpp_unicode_characters 200704 [N2249] C++ 中的新字符类型
__cpp_unicode_literals 200710 [N2442] 原始字符串和 Unicode 字符串字面量;统一提案(修订版 2)
__cpp_user_defined_literals 200809 [N2765] 用户定义字面量(又名可扩展字面量(修订版 5))
__cpp_using_enum 201907 [P1099R5] 使用枚举
__cpp_variable_templates 201304 [N3651] 变量模板(修订版 1)
__cpp_variadic_friend 202403 [P2893R3] 可变参数友元
__cpp_variadic_templates 200704 [N2242] 可变参数模板建议措辞(修订版 2)
__cpp_variadic_using 201611 [P0195R2] using-declaration 中的包扩展

4.2 属性功能测试宏

以下所有宏都是预定义的。

论文
__has_cpp_attribute(assume) 202207 [P1774R8] 可移植假设
[CWG2615] 缺失 __has_cpp_attribute(assume)
__has_cpp_attribute(carries_dependency) 200809 [N2782] C++ 数据依赖顺序:函数标注
__has_cpp_attribute(deprecated) 201309 [N3760] [[deprecated]] 属性
__has_cpp_attribute(fallthrough) 201603 [P0188R1] [[fallthrough]] 属性的措辞
__has_cpp_attribute(likely) 201803 [P0479R5] likely 和 unlikely 属性的建议措辞
__has_cpp_attribute(maybe_unused) 201603 [P0212R1] [[maybe_unused]] 属性的措辞
__has_cpp_attribute(no_unique_address) 201803 [P0840R2] 空对象的语言支持
__has_cpp_attribute(nodiscard) 201603 [P0189R1] [[nodiscard]] 属性的措辞
201907 [P1301R4] [[nodiscard("should have a reason")]]
[P1771R1] 构造函数用 [[nodiscard]]
__has_cpp_attribute(noreturn) 200809 [N2761] C++ 中属性支持的进展(修订版 6)
__has_cpp_attribute(unlikely) 201803 [P0479R5] likely 和 unlikely 属性的建议措辞

4.3 库功能测试宏

以下所有宏在包含头文件 <version> 或下面指定的相应头文件后定义。

头文件 论文
__cpp_lib_adaptor_iterator_pair_constructor <queue> <stack> 202106 [P1425R4] 栈和队列的迭代器对构造函数
__cpp_lib_addressof_constexpr <memory> 201603 [LWG2296] std::addressof 应该是 constexpr
__cpp_lib_algorithm_iterator_requirements <algorithm> <memory> <numeric> 202207 [P2408R5] 将范围迭代器作为非范围算法的输入
__cpp_lib_aligned_accessor <mdspan> 202411 [P2897R7] aligned_accessor:表达指针过对齐的 mdspan 访问器
__cpp_lib_allocate_at_least <memory> 202106 [P0401R6] 在分配器接口中提供大小反馈
202306 [LWG3887] allocate_at_least 的版本宏
__cpp_lib_allocator_traits_is_always_equal <deque> <forward_list> <list> <map> <memory> <scoped_allocator> <set> <string> <unordered_map> <unordered_set> <vector> 201411 [N4258] 清理库中的 noexcept(修订版 3)
__cpp_lib_any <any> 201603 [P0220R1] 采用库基础 V1 TS 组件用于 C++17 (R1)
201606 [P0032R3] variant、any 和 optional 的同质接口(修订版 3)
__cpp_lib_apply <tuple> 201603 [P0220R1] 采用库基础 V1 TS 组件用于 C++17 (R1)
__cpp_lib_array_constexpr <array> <iterator> 201603 [P0031R0] 一个在 reverse_iterator, move_iterator, array 和 Range Access 中添加 Constexpr 修饰符的提案
201803 [P0858R0] Constexpr 迭代器要求
[LWG3257] P0858 缺少功能测试宏更新
201806 [P1023R0] std::array 的 constexpr 比较运算符
201811 [P1032R1] 杂项 constexpr 位
__cpp_lib_as_const <utility> 201510 [P0007R1] 常量视图:std::as_const 辅助函数模板的提案
__cpp_lib_associative_heterogeneous_erasure <map> <set> <unordered_map> <unordered_set> 202110 [P2077R3] 关联容器的异构擦除重载
__cpp_lib_associative_heterogeneous_insertion <map> <set> <unordered_map> <unordered_set> 202306 [P2363R5] 扩展关联容器以支持其余异构重载
__cpp_lib_assume_aligned <memory> 201811 [P1007R3] std::assume_aligned
__cpp_lib_atomic_flag_test <atomic> 201907 [P1135R6] C++20 同步库
__cpp_lib_atomic_float <atomic> 201711 [P0020R6] 浮点原子
__cpp_lib_atomic_is_always_lock_free <atomic> 201603 [P0152R1] constexpr atomic<T>::is_always_lock_free
__cpp_lib_atomic_lock_free_type_aliases <atomic> 201907 [P1135R6] C++20 同步库
__cpp_lib_atomic_min_max <atomic> 202403 [P0493R5] 原子最大/最小值
__cpp_lib_atomic_ref <atomic> 201806 [P0019R8] 原子引用
202411 [P2835R7] 暴露 std::atomic_ref 的对象地址
__cpp_lib_atomic_shared_ptr <memory> 201711 [P0718R2] 为 C++20 修订 atomic_shared_ptr
__cpp_lib_atomic_value_initialization <atomic> <memory> 201911 [P0883R2] 修复原子初始化
__cpp_lib_atomic_wait <atomic> 201907 [P1135R6] C++20 同步库
__cpp_lib_barrier <barrier> 201907 [P1135R6] C++20 同步库
202302 [P2588R3] 放宽 std::barrier 阶段完成步骤保证
__cpp_lib_bind_back <functional> 202202 [P2387R3] 用户定义范围适配器的管道支持
202306 [P2714R1] 将前向和后向绑定到 NTTP 可调用对象
__cpp_lib_bind_front <functional> 201811 [P0356R5] 简化部分函数应用
201907 [P1651R0] bind_front 不应解包 reference_wrapper
202306 [P2714R1] 将前向和后向绑定到 NTTP 可调用对象
__cpp_lib_bit_cast <bit> 201806 [P0476R2] 位转换对象表示
__cpp_lib_bitops <bit> 201907 [P0553R4] 位操作
__cpp_lib_bitset <bitset> 202306 [P2697R1] bitset 与 string_view 的接口
__cpp_lib_bool_constant <type_traits> 201505 [N4389] bool_constant 的措辞,修订版 1
__cpp_lib_bounded_array_traits <type_traits> 201902 [P1357R1] [有界]数组的特性
__cpp_lib_boyer_moore_searcher <functional> 201603 [P0220R1] 采用库基础 V1 TS 组件用于 C++17 (R1)
__cpp_lib_byte <cstddef> 201603 [P0298R3] 字节类型定义
__cpp_lib_byteswap <bit> 202110 [P1272R4] Byteswapping for fun&&nuf
__cpp_lib_char8_t <atomic> <filesystem> <istream> <limits> <locale> <ostream> <string> <string_view> 201811 [P0482R6] char8_t:用于 UTF-8 字符和字符串的类型(修订版 6)
201907 [P1423R3] char8_t 向后兼容性补救
__cpp_lib_chrono <chrono> 201510 [P0092R1] 改进 <chrono>
201611 [P0505R0] GB 50 的措辞
201803 [P0355R7]<chrono> 扩展到日历和时区
201907 [P1466R3] chrono 的杂项小修复
202306 [P2592R3] std::chrono 值类的哈希支持
__cpp_lib_chrono_udls <chrono> 201304 [N3642] 标准库类型的用户定义字面量(第一部分 - 版本 4)
__cpp_lib_clamp <algorithm> 201603 [P0025R0] “夹紧”值介于一对边界值之间的算法
__cpp_lib_common_reference <type_traits> 202302 [P2655R3] common_reference_t of reference_wrapper 应该是一个引用类型
__cpp_lib_common_reference_wrapper <functional> 202302 [P2655R3] common_reference_t of reference_wrapper 应该是一个引用类型
__cpp_lib_complex_udls <complex> 201309 [N3779] std::complex 的用户定义字面量
__cpp_lib_concepts <compare> <concepts> 201806 [P0898R3] 标准库概念
201907 [P1754R1] 将概念重命名为 C++20 的 standard_case,趁我们还能
202002 [P1964R2] boolean-testable 的措辞
202207 [P2404R3] equality_comparable_with, totally_ordered_with 和 three_way_comparable_with 的仅移动类型
__cpp_lib_constexpr_algorithms <algorithm> <utility> 201703 [P0202R3]<algorithm><utility> 头文件中的函数添加 Constexpr 修饰符
201806 [P0879R0] 交换及相关函数的 constexpr
[LWG3256] constexpr 算法的功能测试宏
[LWG3792] __cpp_lib_constexpr_algorithms 也应该定义在
202306 [P2562R1] constexpr 稳定排序
__cpp_lib_constexpr_atomic <atomic> 202411 [P3309R3] constexpr atomic and atomic_ref
__cpp_lib_constexpr_bitset <bitset> 202207 [P2417R2] 更强的 constexpr bitset
__cpp_lib_constexpr_charconv <charconv> 202207 [P2291R3] 在头文件中为整型类型的 to_chars 和 from_chars 函数添加 Constexpr 修饰符
__cpp_lib_constexpr_cmath <cmath> <cstdlib> 202202 [P0533R9] cmath 和 cstdlib 的 constexpr
202306 [P1383R2] cmath 和 complex 的更多 constexpr
__cpp_lib_constexpr_complex <complex> 201711 [P0415R1] std::complex 的 Constexpr
202306 [P1383R2] cmath 和 complex 的更多 constexpr
__cpp_lib_constexpr_deque <deque> 202502 [P3372R3] constexpr 容器和适配器
__cpp_lib_constexpr_dynamic_alloc <memory> 201907 [P0784R7] 更多 constexpr 容器
__cpp_lib_constexpr_exceptions <exception> <expected> <format> <optional> <stdexcept> <variant> 202411 [P3068R6] 允许在常量求值中抛出异常
202502 [P3378R2] constexpr 异常类型
__cpp_lib_constexpr_flat_map <flat_map> 202502 [P3372R3] constexpr 容器和适配器
__cpp_lib_constexpr_flat_set <flat_set> 202502 [P3372R3] constexpr 容器和适配器
__cpp_lib_constexpr_forward_list <forward_list> 202502 [P3372R3] constexpr 容器和适配器
__cpp_lib_constexpr_functional <functional> 201811 [P1032R1] 杂项 constexpr 位
201907 [P1065R2] constexpr INVOKE
__cpp_lib_constexpr_inplace_vector <inplace_vector> 202502 [P3542R0] 废除“转换构造函数”一词
__cpp_lib_constexpr_iterator <iterator> 201811 [P1032R1] 杂项 constexpr 位
__cpp_lib_constexpr_list <list> 202502 [P3372R3] constexpr 容器和适配器
__cpp_lib_constexpr_map <map> 202502 [P3372R3] constexpr 容器和适配器
__cpp_lib_constexpr_memory <memory> 201811 [P1006R1] std::pointer_traits 中的 Constexpr
202202 [P2273R3] 使 std::unique_ptr constexpr 化
__cpp_lib_constexpr_new <new> 202406 [P2747R2] constexpr placement new
__cpp_lib_constexpr_numeric <numeric> 201911 [P1645R1] 数值算法的 constexpr
__cpp_lib_constexpr_queue <queue> 202502 [P3372R3] constexpr 容器和适配器
__cpp_lib_constexpr_set <set> 202502 [P3372R3] constexpr 容器和适配器
__cpp_lib_constexpr_stack <stack> 202502 [P3372R3] constexpr 容器和适配器
__cpp_lib_constexpr_string <string> 201611 [P0426R1] std::char_traits 的 Constexpr
201811 [P1032R1] 杂项 constexpr 位
201907 [P0980R1] 使 std::string constexpr 化
__cpp_lib_constexpr_string_view <string_view> 201611 [P0426R1] std::char_traits 的 Constexpr
201811 [P1032R1] 杂项 constexpr 位
__cpp_lib_constexpr_tuple <tuple> 201811 [P1032R1] 杂项 constexpr 位
__cpp_lib_constexpr_typeinfo <typeinfo> 202106 [P1328R1] 使 std::type_info::operator== constexpr
__cpp_lib_constexpr_unordered_map <unordered_map> 202502 [P3372R3] constexpr 容器和适配器
__cpp_lib_constexpr_unordered_set <unordered_set> 202502 [P3372R3] constexpr 容器和适配器
__cpp_lib_constexpr_utility <utility> 201811 [P1032R1] 杂项 constexpr 位
__cpp_lib_constexpr_vector <vector> 201907 [P1004R2] 使 std::vector constexpr 化
__cpp_lib_constrained_equality <optional> <tuple> <utility> <variant> 202403 [P2944R3] reference_wrapper 的比较
202411 [P3379R0] 约束 std::expected 相等运算符
__cpp_lib_containers_ranges <deque> <forward_list> <list> <map> <queue> <set> <stack> <string> <unordered_map> <unordered_set> <vector> 202202 [P1206R7] 从 Ranges 到容器的转换
__cpp_lib_contracts <contracts> 202502 [P2900R14] C++ 契约
__cpp_lib_copyable_function <functional> 202306 [P2548R6] copyable_function
__cpp_lib_coroutine <coroutine> 201902 [P0912R5] 将 Coroutines TS 合并到 C++20 工作草案中
[LWG3393] 协程的缺失/不正确功能测试宏
__cpp_lib_debugging <debugging> 202311 [P2546R5] 调试支持
202403 [P2810R4] is_debugger_present 可替换
__cpp_lib_deduction_guides 201703 [P0433R2] 解决 US7 和 US14:将类模板的模板推导集成到标准库中
__cpp_lib_default_template_type_for_algorithm_values <algorithm> <deque> <forward_list> <list> <ranges> <string> <vector> 202403 [P2248R8] 为算法启用列表初始化
__cpp_lib_destroying_delete <new> 201806 [P0722R3] 可变大小类的有效大小删除
__cpp_lib_enable_shared_from_this <memory> 201603 [P0033R1] 重新启用 shared_from_this (修订版 1)
__cpp_lib_endian <bit> 201907 [P0463R1] endian,仅 endian
[P1612R1] 重新定位 Endian 的规范
__cpp_lib_erase_if <deque> <forward_list> <list> <map> <set> <string> <unordered_map> <unordered_set> <vector> 201811 [P1209R0] 采用 Library Fundamentals 2 中的一致容器擦除功能用于 C++20
202002 [P1115R3] 改进擦除类算法的返回值 II:自由擦除/条件擦除
__cpp_lib_exchange_function <utility> 201304 [N3668] exchange() 实用函数,修订版 3
__cpp_lib_execution <execution> 201603 [P0024R2] 并行化 TS 应该标准化
201902 [P1001R2] 将并行化 V2 TS 中的目标向量化策略应用于 C++20
__cpp_lib_expected <expected> 202202 [P0323R12] std::expected
202211 [P2505R5] std::expected 的 Monadic 函数
__cpp_lib_filesystem <filesystem> 201603 [P0218R1] 采用 C++17 的文件系统 TS
201606 [P0219R1] 文件系统的相对路径
[P0392R0] 适应文件系统路径的 string_view
201703 [P0317R1] 文件系统的目录项缓存
__cpp_lib_flat_map <flat_map> 202207 [P0429R9] 一个标准 flat_map
__cpp_lib_flat_set <flat_set> 202207 [P1222R4] 一个标准 flat_set
[LWG3751] flat_set 缺少特性宏
__cpp_lib_format <format> 201907 [P0645R10] 文本格式化
[P1361R2] chrono 与文本格式化的集成
[P1652R1] std::format 中的 Printf 角落案例
202106 [P2216R3] std::format 改进
202110 [P2372R3] 修复 chrono 格式化程序中的区域设置处理
[P2418R2] 为 std::format 添加对 std::generator 类似类型的支持
202207 [P2419R2] 澄清 chrono 类型本地化格式化中编码的处理
[P2508R1] 暴露 std::basic-format-string
202304 [P2510R3] 格式化指针
202305 [P2757R3] 类型检查格式参数
202306 [P2637R3] 成员访问
202311 [P2918R2] 运行时格式字符串 II
__cpp_lib_format_path <filesystem> 202403 [P2845R8] std::filesystem::path 的格式化
__cpp_lib_format_ranges <format> 202207 [P2286R8] 格式化 Ranges
[P2585R1] 改进默认容器格式化
[LWG3750] 太多论文更新了 __cpp_lib_format
__cpp_lib_format_uchar <format> 202311 [P2909R4] 修复代码单元作为整数的格式化(Dude,我的 char 在哪?)
__cpp_lib_forward_like <utility> 202207 [P2445R1] forward_like
__cpp_lib_freestanding_algorithm <algorithm> 202311 [P2407R5] 独立库:部分类
202502 [P2976R1] 独立库:algorithm、numeric 和 random
__cpp_lib_freestanding_array <array> 202311 [P2407R5] 独立库:部分类
__cpp_lib_freestanding_char_traits <string> 202306 [P2338R4] 独立库:字符原语和 C 库
__cpp_lib_freestanding_charconv <charconv> 202306 [P2338R4] 独立库:字符原语和 C 库
__cpp_lib_freestanding_cstdlib <cmath> <cstdlib> 202306 [P2338R4] 独立库:字符原语和 C 库
__cpp_lib_freestanding_cstring <cstring> 202306 [P2338R4] 独立库:字符原语和 C 库
202311 [P2937R0] 独立:移除 strtok
__cpp_lib_freestanding_cwchar <cwchar> 202306 [P2338R4] 独立库:字符原语和 C 库
__cpp_lib_freestanding_errc <cerrno> <system_error> 202306 [P2338R4] 独立库:字符原语和 C 库
__cpp_lib_freestanding_execution <execution> 202502 [P2976R1] 独立库:algorithm、numeric 和 random
__cpp_lib_freestanding_expected <expected> 202311 [P2833R2] 独立库:inout expected span
__cpp_lib_freestanding_feature_test_macros 202306 [P2198R7] 独立特性测试宏和实现定义扩展
__cpp_lib_freestanding_functional <functional> 202306 [P2198R7] 独立特性测试宏和实现定义扩展
__cpp_lib_freestanding_iterator <iterator> 202306 [P2198R7] 独立特性测试宏和实现定义扩展
__cpp_lib_freestanding_mdspan <mdspan> 202311 [P2833R2] 独立库:inout expected span
__cpp_lib_freestanding_memory <memory> 202306 [P2198R7] 独立特性测试宏和实现定义扩展
202502 [P2976R1] 独立库:algorithm、numeric 和 random
__cpp_lib_freestanding_numeric <numeric> 202502 [P2976R1] 独立库:algorithm、numeric 和 random
__cpp_lib_freestanding_operator_new <operator_new> 202306 [P2198R7] 独立特性测试宏和实现定义扩展
__cpp_lib_freestanding_optional <optional> 202311 [P2407R5] 独立库:部分类
__cpp_lib_freestanding_random <random> 202502 [P2976R1] 独立库:algorithm、numeric 和 random
__cpp_lib_freestanding_ranges <ranges> 202306 [P2198R7] 独立特性测试宏和实现定义扩展
__cpp_lib_freestanding_ratio <ratio> 202306 [P2198R7] 独立特性测试宏和实现定义扩展
__cpp_lib_freestanding_string_view <string_view> 202311 [P2407R5] 独立库:部分类
__cpp_lib_freestanding_tuple <tuple> 202306 [P2198R7] 独立特性测试宏和实现定义扩展
__cpp_lib_freestanding_utility <utility> 202306 [P2198R7] 独立特性测试宏和实现定义扩展
__cpp_lib_freestanding_variant <variant> 202311 [P2407R5] 独立库:部分类
__cpp_lib_fstream_native_handle <fstream> 202306 [P1759R6] 本机句柄和文件流
__cpp_lib_function_ref <functional> 202306 [P0792R14] function_ref: 一个非拥有可调用对象引用
__cpp_lib_gcd_lcm <numeric> 201606 [P0295R0] 采用 C++17 的 Library Fundamentals V2 精选组件
__cpp_lib_generate_random <random> 202403 [P1068R11] 随机数生成的向量 API
__cpp_lib_generator <generator> 202207 [P2502R2] std::generator: Ranges 的同步协程生成器
__cpp_lib_generic_associative_lookup <map> <set> 201304 [N3657] 为关联容器添加异构比较查找(修订版 4)
__cpp_lib_generic_unordered_hash_lookup <unordered_map> <unordered_set> 201902 [P0920R2] 查找中的预计算哈希值
已删除 [P1661R1] 移除专用预计算哈希查找接口
__cpp_lib_generic_unordered_lookup <unordered_map> <unordered_set> 201811 [P0919R3] 无序容器的异构查找
__cpp_lib_hardened_array <array> 202502 [P3471R4] 标准库强化
__cpp_lib_hardened_basic_string <string> 202502 [P3471R4] 标准库强化
__cpp_lib_hardened_basic_string_view <string_view> 202502 [P3471R4] 标准库强化
__cpp_lib_hardened_bitset <bitset> 202502 [P3471R4] 标准库强化
__cpp_lib_hardened_deque <deque> 202502 [P3471R4] 标准库强化
__cpp_lib_hardened_expected <expected> 202502 [P3471R4] 标准库强化
__cpp_lib_hardened_forward_list <forward_list> 202502 [P3471R4] 标准库强化
__cpp_lib_hardened_inplace_vector <inplace_vector> 202502 [P3471R4] 标准库强化
__cpp_lib_hardened_list <list> 202502 [P3471R4] 标准库强化
__cpp_lib_hardened_mdspan <mdspan> 202502 [P3471R4] 标准库强化
__cpp_lib_hardened_optional <optional> 202502 [P3471R4] 标准库强化
__cpp_lib_hardened_span <span> 202502 [P3471R4] 标准库强化
__cpp_lib_hardened_valarray <valarray> 202502 [P3471R4] 标准库强化
__cpp_lib_hardened_vector <vector> 202502 [P3471R4] 标准库强化
__cpp_lib_hardware_interference_size <new> 201703 [P0154R1] constexpr std::thread::hardware_{true,false}_sharing_size
__cpp_lib_has_unique_object_representations <type_traits> 201606 [P0258R2] has_unique_object_representations - 措辞
__cpp_lib_hazard_pointer <hazard_pointer> 202306 [P2545R4] 读-复制-更新 (RCU)
__cpp_lib_hive <hive> 202502 [P0447R28] 将 std::hive 引入标准库
__cpp_lib_hypot <cmath> 201603 [P0030R1] 提议向 std::hypot 引入一个 3 参数重载
__cpp_lib_incomplete_container_elements <forward_list> <list> <vector> 201505 [N4510] 标准容器的最小不完整类型支持,修订版 4
__cpp_lib_indirect <memory> 202502 [P3019R11] 复合类设计的词汇类型
__cpp_lib_inplace_vector <inplace_vector> 202406 [P0843R14] inplace_vector
__cpp_lib_int_pow2 <bit> 201806 [P0556R3] 整数 2 的幂运算
202002 [P1956R1] 关于低级位操作函数的命名
__cpp_lib_integer_comparison_functions <utility> 202002 [P0586R2] 安全的整数比较
__cpp_lib_integer_sequence <utility> 201304 [N3658] 编译时整数序列
__cpp_lib_integral_constant_callable <type_traits> 201304 [N3545] integral_constant 的渐进改进
__cpp_lib_interpolate <cmath> <numeric> 201902 [P0811R3] 数字和指针的良好插值
__cpp_lib_invoke <functional> 201411 [N4169] 提议添加 invoke 函数模板(修订版 1)
__cpp_lib_invoke_r <functional> 202106 [P2136R3] invoke_r
__cpp_lib_ios_noreplace <ios> 202207 [P2467R1] 支持 fstream 的独占模式
__cpp_lib_is_aggregate <type_traits> 201703 [LWG2911] 需要 is_aggregate 类型特性
__cpp_lib_is_constant_evaluated <type_traits> 201811 [P0595R2] std::is_constant_evaluated
__cpp_lib_is_final <type_traits> 201402 [LWG2112] 无法派生的用户定义类
__cpp_lib_is_implicit_lifetime <type_traits> 202302 [P2674R1] 隐式生命周期类型的特性
__cpp_lib_is_invocable <type_traits> 201703 [P0604R0] 解决 GB 55, US 84, US 85, US 86
__cpp_lib_is_layout_compatible <type_traits> 201907 [P0466R5] 布局兼容性和指针可互转换性特性
__cpp_lib_is_nothrow_convertible <type_traits> 201806 [P0758R1] 隐式转换特性和实用函数
[LWG3356] __cpp_lib_nothrow_convertible 应该改为 __cpp_lib_is_nothrow_convertible
__cpp_lib_is_null_pointer <type_traits> 201309 [LWG2247] 类型特性和 std::nullptr_t
__cpp_lib_is_pointer_interconvertible <type_traits> 201907 [P0466R5] 布局兼容性和指针可互转换性特性
__cpp_lib_is_scoped_enum <type_traits> 202011 [P1048R1] 用于检测范围枚举的类型特性提议
__cpp_lib_is_sufficiently_aligned <memory> 202411 [P2897R7] aligned_accessor:表达指针过对齐的 mdspan 访问器
__cpp_lib_is_swappable <type_traits> 201603 [P0185R1] 添加 [nothrow-]swappable 特性,修订版 3
__cpp_lib_is_virtual_base_of <type_traits> 202406 [P2985R0] 用于检测虚基类的类型特性
__cpp_lib_is_within_lifetime <type_traits> 202306 [P2641R4] 检查联合体候选项是否激活
__cpp_lib_jthread <stop_token> <thread> 201907 [P0660R10] Stop Token 和 Joining Thread
201911 [P1869R1] 重命名 ‘condition_variable_any’ 可中断等待方法
__cpp_lib_latch <latch> 201907 [P1135R6] C++20 同步库
__cpp_lib_launder <new> 201606 [P0137R1] 核心问题 1776:包含引用成员的类对象的替换
__cpp_lib_linalg <linalg> 202311 [P1673R13] 基于 BLAS 的自由函数线性代数接口
202411 [P3050R2] 通过优化 linalg::conjugated 用于非复数值类型来修复 C++26
[P3222R0] 通过为 P2642 布局添加转置特殊情况来修复 C++26
__cpp_lib_list_remove_return_type <forward_list> <list> 201806 [P0646R1] 改进擦除类算法的返回值 I:list/forward list
__cpp_lib_logical_traits <type_traits> 201510 [P0013R1] 逻辑运算符类型特性(修订版 1)
__cpp_lib_make_from_tuple <tuple> 201606 [P0209R2] make_from_tuple: 构造时的应用
__cpp_lib_make_reverse_iterator <iterator> 201402 [LWG2285] make_reverse_iterator
__cpp_lib_make_unique <memory> 201304 [N3656] make_unique(修订版 1)
__cpp_lib_map_try_emplace <map> 201411 [N4279] 唯一键映射的改进插入接口(修订版 2.3)
__cpp_lib_math_constants <numbers> 201907 [P0631R8] 数学常数
__cpp_lib_math_special_functions <cmath> 201603 [P0226R1] C++17 的数学特殊函数,v5
__cpp_lib_mdspan <mdspan> 202207 [P0009R18] MDSPAN
[P2599R2] mdspan 中的 index _type & size_type
[P2604R0] MDSPAN:重命名 pointer 和 contiguous
[P2613R1] 为 mdspan 添加缺失的 empty
202406 [P2389R2] dextents 索引类型参数
__cpp_lib_memory_resource <memory_resource> 201603 [P0220R1] 采用库基础 V1 TS 组件用于 C++17 (R1)
__cpp_lib_modules 202207 [P2465R3] 标准库模块 std 和 std.compat
__cpp_lib_monadic_optional <optional> 202110 [P0798R8] std::optional 的 Monadic 操作
已删除 [LWG3621] 移除特性测试宏 __cpp_lib_monadic_optional
__cpp_lib_move_iterator_concept <iterator> 202207 [P2520R0] move_iterator 应该是随机访问迭代器
__cpp_lib_move_only_function <functional> 202110 [P0288R9] move_only_function(原 any_invocable)
__cpp_lib_node_extract <map> <set> <unordered_map> <unordered_set> 201606 [P0083R3] 拼接映射和集合(修订版 5)
__cpp_lib_nonmember_container_access <array> <deque> <forward_list> <iterator> <list> <map> <regex> <set> <string> <unordered_map> <unordered_set> <vector> 201411 [N4280] 非成员 size() 和更多(修订版 2)
__cpp_lib_not_fn <functional> 201603 [P0005R4] 采用 Library Fundamentals 2 中的 not_fn 用于 C++17
202306 [P2714R1] 将前向和后向绑定到 NTTP 可调用对象
__cpp_lib_null_iterators <iterator> 201304 [N3644] 空前向迭代器
__cpp_lib_optional <optional> 201603 [P0220R1] 采用库基础 V1 TS 组件用于 C++17 (R1)
201606 [P0032R3] variant、any 和 optional 的同质接口(修订版 3)
[P0307R2] 使 Optional 再次相等
202106 [P2231R1] 为 optional/variant 添加更多 constexpr 支持
202110 [P0798R8] std::optional 的 Monadic 操作
[LWG3621] 移除特性测试宏 __cpp_lib_monadic_optional
__cpp_lib_optional_range_support <optional> 202406 [P3168R2] 为 std::optional 提供 Range 支持
__cpp_lib_out_ptr <memory> 202106 [P1132R7] out_ptr - 可伸缩的输出指针抽象
202311 [P2833R2] 独立库:inout expected span
__cpp_lib_parallel_algorithm <algorithm> <numeric> 201603 [P0024R2] 并行化 TS 应该标准化
__cpp_lib_philox_engine <random> 202406 [P2075R6] Philox 作为 C++ RNG 引擎的扩展
__cpp_lib_polymorphic <memory> 202502 [P3019R11] 复合类设计的词汇类型
__cpp_lib_polymorphic_allocator <memory_resource> 201902 [P0339R6] polymorphic_allocator<> 作为词汇类型
[LWG3437] __cpp_lib_polymorphic_allocator 位于错误的头文件中
__cpp_lib_print <ostream> <print> 202207 [P2093R14] 格式化输出
202403 [P3107R5] 允许高效实现 std::print
202406 [P3235R3] std::print 用更少的内存更快地打印更多类型
__cpp_lib_quoted_string_io <iomanip> 201304 [N3654] 引号字符串库提案(修订版 2)
__cpp_lib_ranges <algorithm> <functional> <iterator> <memory> <ranges> 201811 [P0896R4] 统一 Ranges 提案
201907 [P1035R7] 输入范围适配器
201911 [P1716R3] ranges 比较算法约束过严
202106 [P2325R3] 视图不应要求默认可构造
202110 [P2415R2] 什么是视图?
202202 [P2387R3] 用户定义范围适配器的管道支持
202207 [P2494R2] 放宽范围适配器以允许仅移动类型
202211 [P2602R2] 毒丸太毒了
202302 [P2609R3] 稍稍放宽 Ranges
202406 [P2997R1] 移除间接可调用概念中的公共引用要求
__cpp_lib_ranges_as_const <ranges> 202207 [P2278R4] cbegin 应该总是返回一个常量迭代器
202311 [P2836R1] std::basic_const_iterator 应该遵循其底层类型的可转换性
__cpp_lib_ranges_as_rvalue <ranges> 202207 [P2446R2] views::as_rvalue
__cpp_lib_ranges_cache_latest <ranges> 202411 [P3138R5] views::cache_latest
__cpp_lib_ranges_cartesian_product <ranges> 202207 [P2374R4] views::cartesian_product
[P2540R1] 某些视图的空积
__cpp_lib_ranges_chunk <ranges> 202202 [P2442R1] 窗口范围适配器:views::chunk 和 views::slide
__cpp_lib_ranges_chunk_by <ranges> 202202 [P2443R1] views::chunk_by
__cpp_lib_ranges_concat <ranges> 202403 [P2542R8] views::concat
__cpp_lib_ranges_contains <algorithm> 202207 [P2302R4] std::ranges::contains
__cpp_lib_ranges_enumerate <ranges> 202302 [P2164R9] views::enumerate
__cpp_lib_ranges_find_last <algorithm> 202207 [P1223R5] find_last
[LWG3807] ranges::find_last 的特性测试宏应重命名
__cpp_lib_ranges_fold <algorithm> 202207 [P2322R6] ranges::fold
__cpp_lib_ranges_iota <numeric> 202202 [P2440R1] ranges::iota, ranges::shift_left 和 ranges::shift_right
__cpp_lib_ranges_join_with <ranges> 202202 [P2441R2] views::join_with
__cpp_lib_ranges_repeat <ranges> 202207 [P2474R2] views::repeat
__cpp_lib_ranges_reserve_hint <ranges> 202502 [P2846R6] reserve_hint: 为不完全大小的惰性范围预留内存
__cpp_lib_ranges_slide <ranges> 202202 [P2442R1] 窗口范围适配器:views::chunk 和 views::slide
__cpp_lib_ranges_starts_ends_with <algorithm> 202106 [P1659R3] starts_with 和 ends_with
__cpp_lib_ranges_stride <ranges> 202207 [P1899R3] stride_view
__cpp_lib_ranges_to_container <ranges> 202202 [P1206R7] 从 Ranges 到容器的转换
__cpp_lib_ranges_to_input <ranges> 202502 [P3137R3] views::to_input
__cpp_lib_ranges_zip <ranges> <tuple> <utility> 202110 [P2321R2] zip
__cpp_lib_ratio <ratio> 202306 [P2734R0] 添加新的 2022 SI 前缀
__cpp_lib_raw_memory_algorithms <memory> 201606 [P0040R3] 扩展内存管理工具
202411 [P3369R0] uninitialized_default_construct 的 constexpr
[P3508R0] 专用内存算法的 constexpr 措辞
__cpp_lib_rcu <rcu> 202306 [P2545R4] 读-复制-更新 (RCU)
__cpp_lib_reference_from_temporary <type_traits> 202202 [P2255R2] 用于检测引用绑定到临时对象的类型特性
__cpp_lib_reference_wrapper <functional> 202403 [P2944R3] reference_wrapper 的比较
__cpp_lib_remove_cvref <type_traits> 201711 [P0550R2] 转换特性 remove_cvref
__cpp_lib_result_of_sfinae <functional> <type_traits> 201210 [N3462] std::result_of 和 SFINAE
__cpp_lib_robust_nonmodifying_seq_ops <algorithm> 201304 [N3671] 使非修改序列操作更健壮:修订版 2
__cpp_lib_sample <algorithm> 201603 [P0220R1] 采用库基础 V1 TS 组件用于 C++17 (R1)
__cpp_lib_saturation_arithmetic <numeric> 202311 [P0543R3] 饱和算术
__cpp_lib_scoped_lock <mutex> 201703 [P0156R2] Variadic lock_guard (修订版 4)
__cpp_lib_semaphore <semaphore> 201907 [P1135R6] C++20 同步库
__cpp_lib_senders <execution> 202406 [P2300R10] std::execution
__cpp_lib_shared_mutex <shared_mutex> 201505 [N4508] 提议添加 shared_mutex(无定时)(修订版 4)
__cpp_lib_shared_ptr_arrays <memory> 201611 [P0497R0] 修复 shared_ptr 对数组的支持
201707 [P0674R1] 扩展 make_shared 以支持数组
__cpp_lib_shared_ptr_weak_type <memory> 201606 [P0163R0] shared_ptr::weak_type
__cpp_lib_shared_timed_mutex <shared_mutex> 201402 [N3891] 提议将 shared_mutex 重命名为 shared_timed_mutex
__cpp_lib_shift <algorithm> 201806 [P0769R2] 将 shift 添加到 <algorithm>
202202 [P2440R1] ranges::iota, ranges::shift_left 和 ranges::shift_right
__cpp_lib_simd <simd> 202411 [P1928R15] std::simd - 合并并行性 TS 2 中的数据并行类型
202502 [P2933R4] 扩展带有 std::simd 重载的头函数
[P3287R3] std::simd 的命名空间探索
[P3441R2] 将 simd_split 重命名为 simd_chunk
__cpp_lib_simd_complex <simd> 202502 [P2663R7] 支持 std::simd 中交错复杂值的提案
__cpp_lib_smart_pointer_owner_equality <memory> 202306 [P1901R2] 允许在无序关联容器中使用 weak_ptr 作为键
__cpp_lib_smart_ptr_for_overwrite <memory> 202002 [P1020R1] 带有默认初始化的智能指针创建
[P1973R1] 重命名 _default_init 函数(NB 评论 DE002)
__cpp_lib_source_location <source_location> 201907 [P1208R6] 采用 Library Fundamentals V3 中的 source location 用于 C++20
__cpp_lib_span <span> 201803 [P0122R7] span:对象的序列的边界安全视图
[LWG3274] 缺少 <span> 的特性测试宏
201902 [P1024R3] std::span 的可用性增强
202002 [P1976R2] 从动态范围构造固定大小的 span
202311 [P2821R5] span.at()
[P2833R2] 独立库:inout expected span
__cpp_lib_span_initializer_list <span> 202311 [P2447R6] initializer list 上的 std::span
__cpp_lib_spanstream <spanstream> 202106 [P0448R4] 使用 span 作为缓冲区的 strstream 替换
__cpp_lib_ssize <iterator> 201902 [P1227R2] 有符号 ssize() 函数,无符号 size() 函数
__cpp_lib_sstream_from_string_view <sstream> 202306 [P2495R3] stringstream 与 string_view 的接口
__cpp_lib_stacktrace <stacktrace> 202011 [P0881R7] 提议添加堆栈跟踪库
__cpp_lib_start_lifetime_as <memory> 202207 [P2590R2] 显式生命周期管理
__cpp_lib_starts_ends_with <string> <string_view> 201711 [P0457R2] 字符串前缀和后缀检查
__cpp_lib_stdatomic_h <stdatomic.h> 202011 [P0943R6] 支持 C 原子操作在 C++ 中
__cpp_lib_string_contains <string> <string_view> 202011 [P1679R3] 字符串包含函数
__cpp_lib_string_resize_and_overwrite <string> 202110 [P1072R10] basic_string::resize_and_overwrite
__cpp_lib_string_udls <string> 201304 [N3642] 标准库类型的用户定义字面量(第一部分 - 版本 4)
__cpp_lib_string_view <string> <string_view> 201603 [P0220R1] 采用库基础 V1 TS 组件用于 C++17 (R1)
201606 [P0254R2] 集成 std::string_viewstd::string
201803 [P0858R0] Constexpr 迭代器要求
[LWG3257] P0858 缺少功能测试宏更新
202403 [P2591R5] 字符串和字符串视图的连接
__cpp_lib_submdspan <mdspan> 202306 [P2630R4] Submdspan
202403 [P2642R6] 填充 mdspan 布局
202411 [P3355R1] 修复 C++26 的 submdspan
__cpp_lib_syncbuf <syncstream> 201711 [P0053R7] C++ 同步缓冲输出流
201803 [P0753R2] C++ 同步缓冲输出流的操作器
__cpp_lib_text_encoding <text_encoding> 202306 [P1885R12] 命名文本编码以消除神秘感
__cpp_lib_three_way_comparison <compare> 201711 [P0768R1] 飞船(比较)运算符的库支持
201907 [P1614R2] 母舰已着陆:向库中添加 <=>
__cpp_lib_to_address <memory> 201711 [P0653R2] 将指针转换为原始指针的实用程序
__cpp_lib_to_array <array> 201907 [P0325R4] LFTS 的 to_array 及更新
__cpp_lib_to_chars <charconv> 201611 [P0067R5] 基本字符串转换,修订版 5
[P0682R1] 修复基本字符串转换
[LWG3137] __cpp_lib_to_chars 的头文件
202306 [P2497R0] charconv 函数的成功或失败测试
__cpp_lib_to_string <string> 202306 [P2587R3] to_string 还是 not to_string
__cpp_lib_to_underlying <utility> 202102 [P1682R2] std::to_underlying
__cpp_lib_transformation_trait_aliases <type_traits> 201304 [N3655] TransformationTraits Redux, v2
__cpp_lib_transparent_operators <functional> <memory> 201210 [N3421] 使运算符函数对象 greater<>
201510 [P0074R0] 使 std::owner_less 更灵活
__cpp_lib_trivially_relocatable <memory> <type_traits> 202502 [P2786R13] C++26 的微不足道的重新定位能力
__cpp_lib_tuple_element_t <tuple> 201402 [N3887] 一致的元函数别名
__cpp_lib_tuple_like <map> <tuple> <unordered_map> <utility> 202207 [P2165R4] tuple、pair 和类似 tuple 对象之间的兼容性
202311 [P2819R2] 为 complex 添加 tuple 协议
__cpp_lib_tuples_by_type <tuple> <utility> 201304 [N3670] 按类型寻址元组的措辞:修订版 2
__cpp_lib_type_identity <type_traits> 201806 [P0887R1] 恒等元函数
__cpp_lib_type_trait_variable_templates <type_traits> 201510 [P0006R0] 采用 Library Fundamentals TS 中的类型特性变量模板用于 C++17
__cpp_lib_uncaught_exceptions <exception> 201411 [N4259] std::uncaught_exceptions 的措辞
__cpp_lib_unordered_map_try_emplace <unordered_map> 201411 [N4279] 唯一键映射的改进插入接口(修订版 2.3)
__cpp_lib_unreachable <utility> 202202 [P0627R6] 标记不可达代码的函数
__cpp_lib_unwrap_ref <type_traits> 201811 [P0318R1] unwrap_ref_decay 和 unwrap_reference
[LWG3348] __cpp_lib_unwrap_ref 位于错误的头文件中
__cpp_lib_variant <variant> 201606 [P0088R3] Variant:C++17 的类型安全 union (v8)
[P0393R3] 使 Variant 再次相等
[P0032R3] variant、any 和 optional 的同质接口(修订版 3)
202102 [P2162R2] 继承自 std::variant(解决 LWG3052)
202106 [P2231R1] 为 optional/variant 添加更多 constexpr 支持
202306 [P2637R3] 成员访问
__cpp_lib_void_t <type_traits> 201411 [N3911] TransformationTrait 别名 void_t

5 参考文献

[CWG2615] S. B. Tam. 2022-08-17. 缺失 __has_cpp_attribute(assume)。
https://wg21.link/cwg2615
[CWG2659] CWG. 2022-12-02. range-for 循环中生命周期扩展的特性测试宏缺失。
https://wg21.link/cwg2659
[LWG2112] Daniel Krügler. 用户定义的无法派生的类。
https://wg21.link/lwg2112
[LWG2247] Joe Gottman. 类型特性和 std::nullptr_t。
https://wg21.link/lwg2247
[LWG2285] Zhihao Yuan. make_reverse_iterator。
https://wg21.link/lwg2285
[LWG2296] Daryle Walker. std::addressof 应该为 constexpr。
https://wg21.link/lwg2296
[LWG2911] 美国. 需要一个 is_aggregate 类型特性。
https://wg21.link/lwg2911
[LWG3137] S. B. Tam. __cpp_lib_to_chars 的头文件。
https://wg21.link/lwg3137
[LWG3256] Antony Polukhin. constexpr 算法的特性测试宏。
https://wg21.link/lwg3256
[LWG3257] Antony Polukhin. P0858 缺少特性测试宏更新。
https://wg21.link/lwg3257
[LWG3274] Jonathan Wakely. <span> 缺少特性测试宏。
https://wg21.link/lwg3274
[LWG3348] Barry Revzin. __cpp_lib_unwrap_ref 位于错误的头文件中。
https://wg21.link/lwg3348
[LWG3356] Barry Revzin. __cpp_lib_nothrow_convertible 应该改为 __cpp_lib_is_nothrow_convertible。
https://wg21.link/lwg3356
[LWG3393] Barry Revzin. 协程缺少/不正确的特性测试宏。
https://wg21.link/lwg3393
[LWG3437] Jonathan Wakely. __cpp_lib_polymorphic_allocator 位于错误的头文件中。
https://wg21.link/lwg3437
[LWG3621] Jens Maurer. 移除特性测试宏 __cpp_lib_monadic_optional。
https://wg21.link/lwg3621
[LWG3750] Barry Revzin. 太多论文更新了 __cpp_lib_format。
https://wg21.link/lwg3750
[LWG3751] Barry Revzin. flat_set 缺少特性宏。
https://wg21.link/lwg3751
[LWG3792] Marc Mutz. __cpp_lib_constexpr_algorithms 也应该在 <utility> 中定义。
https://wg21.link/lwg3792
[LWG3807] Daniel Marshall. ranges::find_last 的特性测试宏应该重命名。
https://wg21.link/lwg3807
[LWG3887] Alisdair Meredith. allocate_at_least 的版本宏。
https://wg21.link/lwg3887
[N1720] R. Klarer, J. Maddock, B. Dawes, H. Hinnant. 2004-10-20. 提议向核心语言添加静态断言(修订版 3)。
https://wg21.link/n1720
[N1986] H. Sutter, F. Glassborow. 2006-04-06. 委托构造函数(修订版 3)。
https://wg21.link/n1986
[N2118] Howard E. Hinnant. 2006-10-19. 提议向 C++ 语言添加右值引用:提议措辞:修订版 3。
https://wg21.link/n2118
[N2235] G. Dos Reis, B. Stroustrup, J. Maurer. 2007-04-17. 广义常量表达式——修订版 5。
https://wg21.link/n2235
[N2242] D. Gregor, J. Järvi, J. Maurer, J. Merrill. 2007-04-19. 变长模板的提议措辞(修订版 2)。
https://wg21.link/n2242
[N2249] Lawrence Crowl. 2007-04-19. C++ 中的新字符类型。
https://wg21.link/n2249
[N2258] G. Dos Reis, B. Stroustrup. 2007-04-19. 模板别名。
https://wg21.link/n2258
[N2343] J. Järvi, B. Stroustrup, G. Dos Reis. 2007-07-18. Decltype(修订版 7):提议措辞。
https://wg21.link/n2343
[N2439] Bronek Kozicki. 2007-10-05. 将移动语义扩展到 *this(修订措辞)。
https://wg21.link/n2439
[N2442] L. Crowl, B. Dawes. 2007-10-05. 原始和 Unicode 字符串字面量;统一提案(修订版 2)。
https://wg21.link/n2442
[N2540] A. Meredith, M. Wong, J. Maurer. 2008-02-29. 继承构造函数(修订版 5)。
https://wg21.link/n2540
[N2660] Lawrence Crowl. 2008-06-13. 带有并发的动态初始化和销毁。
https://wg21.link/n2660
[N2672] J. Merrill, D. Vandevoorde. 2008-06-12. 初始化列表提议措辞。
https://wg21.link/n2672
[N2756] M. Spertus, B. Seymour. 2008-09-16. 非静态数据成员初始化器。
https://wg21.link/n2756
[N2761] J. Maurer, M. Wong. 2008-09-18. 支持 C++ 中的属性(修订版 6)。
https://wg21.link/n2761
[N2765] I. McIntosh, M. Wong, R. Mak, R. Klarer, et al. 2008-09-18. 用户定义字面量(又名可扩展字面量(修订版 5))。
https://wg21.link/n2765
[N2782] P. McKenney, L. Crowl. 2008-09-18. C++ 数据依赖顺序:函数注解。
https://wg21.link/n2782
[N2927] Daveed Vandevoorde. 2009-07-15. C++0x Lambdas 新措辞(修订版 2)。
https://wg21.link/n2927
[N2930] D. Gregor, B. Dawes. 2009-07-16. 基于范围的 for 循环措辞(无概念)。
https://wg21.link/n2930
[N3421] Stephan T. Lavavej. 2012-09-20. 使运算符函数对象 greater<>。
https://wg21.link/n3421
[N3462] E. Niebler, D. Walker, J. de Guzman. 2012-10-18. std::result_of 和 SFINAE。
https://wg21.link/n3462
[N3472] James Dennett. 2012-10-19. C++ 核心语言中的二进制字面量。
https://wg21.link/n3472
[N3545] Walter E. Brown. 2013-03-12. integral_constant 的渐进改进。
https://wg21.link/n3545
[N3638] Jason Merrill. 2013-04-17. 普通函数的返回类型推导。
https://wg21.link/n3638
[N3642] Peter Sommerlad. 2013-04-18. 标准库类型的用户定义字面量(第一部分 - 版本 4)。
https://wg21.link/n3642
[N3644] Alan Talbot. 2013-04-18. 空前向迭代器。
https://wg21.link/n3644
[N3648] D. Vandevoorde, V. Voutilainen. 2013-04-17. 广义 Lambda 捕获的措辞更改。
https://wg21.link/n3648
[N3649] F. Vali, H. Sutter, D. Abrahams. 2013-04-19. 泛型(多态)Lambda 表达式(修订版 3)。
https://wg21.link/n3649
[N3651] Gabriel Dos Reis. 2013-04-19. 变量模板(修订版 1)。
https://wg21.link/n3651
[N3652] Richard Smith. 2013-04-18. 放宽 constexpr 函数的约束 / constexpr 成员函数和隐式 const。
https://wg21.link/n3652
[N3653] V. Voutilainen, R. Smith. 2013-04-17. 成员初始化器和聚合。
https://wg21.link/n3653
[N3654] Beman Dawes. 2013-04-19. 引号字符串库提案(修订版 2)。
https://wg21.link/n3654
[N3655] Walter E. Brown. 2013-04-18. TransformationTraits Redux, v2。
https://wg21.link/n3655
[N3656] Stephan T. Lavavej. 2013-04-18. make_unique(修订版 1)。
https://wg21.link/n3656
[N3657] J. Wakely, S. Lavavej, J. Muñoz. 2013-03-19. 为关联容器添加异构比较查找(修订版 4)。
https://wg21.link/n3657
[N3658] Jonathan Wakely. 2013-04-18. 编译时整数序列。
https://wg21.link/n3658
[N3668] Jeffrey Yasskin. 2013-04-19. exchange() 实用函数,修订版 3。
https://wg21.link/n3668
[N3670] Mike Spertus. 2013-04-19. 按类型寻址元组的措辞:修订版 2。
https://wg21.link/n3670
[N3671] M. Spertus, A. Pall. 2013-04-19. 使非修改序列操作更健壮:修订版 2。
https://wg21.link/n3671
[N3760] Alberto Ganesh Barbati. 2013-09-01. [[deprecated]] 属性。
https://wg21.link/n3760
[N3778] Lawrence Crowl. 2013-09-27. C++ 大小化释放。
https://wg21.link/n3778
[N3779] Peter Sommerlad. 2013-09-24. std::complex 的用户定义字面量。
https://wg21.link/n3779
[N3887] Michael Park. 2013-12-26. 一致的元函数别名。
https://wg21.link/n3887
[N3891] G. Nishanov, H. Sutter. 2014-01-14. 提议将 shared_mutex 重命名为 shared_timed_mutex。
https://wg21.link/n3891
[N3911] Walter E. Brown. 2014-02-23. TransformationTrait 别名 void_t。
https://wg21.link/n3911
[N3928] Walter E. Brown. 2014-02-14. 扩展 static_assert, v2。
https://wg21.link/n3928
[N4169] Tomasz Kamiński. 2014-08-22. 提议添加 invoke 函数模板(修订版 1)。
https://wg21.link/n4169
[N4258] Nicolai Josuttis. 2014-11-07. 清理库中的 noexcept(修订版 3)。
https://wg21.link/n4258
[N4259] Herb Sutter. 2014-11-06. std::uncaught_exceptions 的措辞。
https://wg21.link/n4259
[N4266] Richard Smith. 2014-11-05. 命名空间和枚举器的属性。
https://wg21.link/n4266
[N4268] Richard Smith. 2014-11-05. 允许对所有非类型模板参数进行常量评估。
https://wg21.link/n4268
[N4279] Thomas Köpp. 2014-11-07. 唯一键映射的改进插入接口(修订版 2.3)。
https://wg21.link/n4279
[N4280] Riccardo Marcangelo. 2014-11-06. 非成员 size() 和更多(修订版 2)。
https://wg21.link/n4280
[N4295] Andrew Sutton, Richard Smith. 2014-11-07. 折叠表达式。
https://wg21.link/n4295
[N4389] Zhihao Yuan. 2015-02-23. bool_constant 的措辞,修订版 1。
https://wg21.link/n4389
[N4508] Gor Nishanov. 2015-05-05. 提议添加 shared_mutex(无定时)(修订版 4)。
https://wg21.link/n4508
[N4510] Zhihao Yuan. 2015-05-05. 标准容器的最小不完整类型支持,修订版 4。
https://wg21.link/n4510
[P0005R4] Alisdair Meredith. 2016-03-01. 采用 Library Fundamentals 2 中的 not_fn 用于 C++17。
https://wg21.link/p0005r4
[P0006R0] Alisdair Meredith. 2015-09-28. 采用 Library Fundamentals TS 中的类型特性变量模板用于 C++17。
https://wg21.link/p0006r0
[P0007R1] ADAM David Alan Martin, Alisdair Meredith. 2015-10-22. 常量视图:std::as_const 助手函数模板的提案。
https://wg21.link/p0007r1
[P0009R18] Christian Trott, D.S. Hollman, Damien Lebrun-Grandie, Mark Hoemmen, Daniel Sunderland, H. Carter Edwards, Bryce Adelstein Lelbach, Mauro Bianco, Ben Sander, Athanasios Iliopoulos, John Michopoulos, Nevin Liber. 2022-07-13. MDSPAN。
https://wg21.link/p0009r18
[P0012R1] Jens Maurer. 2015-10-22. 使异常规范成为类型系统的一部分,版本 5。
https://wg21.link/p0012r1
[P0013R1] Jonathan Wakely. 2015-10-23. 逻辑运算符类型特性(修订版 1)。
https://wg21.link/p0013r1
[P0017R1] Oleg Smolsky. 2015-10-24. 聚合初始化的扩展。
https://wg21.link/p0017r1
[P0018R3] H. Carter Edwards, Daveed Vandevoorde, Christian Trott, Hal Finkel, Jim Reus, Robin Maffeo, Ben Sander. 2016-03-04. Lambda 值捕获 *this 为 [=,*this]。
https://wg21.link/p0018r3
[P0019R8] Daniel Sunderland, H. Carter Edwards, Hans Boehm, Olivier Giroux, Mark Hoemmen, D. S. Hollman, Bryce Adelstein Lelbach, Jens Maurer. 2018-06-07. Atomic Ref。
https://wg21.link/p0019r8
[P0020R6] H. Carter Edwards, Hans Boehm, Olivier Giroux, JF Bastien, James Reus. 2017-11-10. 浮点原子。
https://wg21.link/p0020r6
[P0024R2] Jared Hoberock. 2016-03-04. 并行化 TS 应该标准化。
https://wg21.link/p0024r2
[P0025R0] Martin Moene, Niels Dekker. 2015-09-18. 在一对边界值之间“钳位”值的算法。
https://wg21.link/p0025r0
[P0030R1] Benson Ma. 2015-11-06. 提议向 std::hypot 引入一个 3 参数重载。
https://wg21.link/p0030r1
[P0031R0] Antony Polukhin. 2015-09-09. 提议向 reverse_iterator、move_iterator、array 和范围访问添加 constexpr 修饰符。
https://wg21.link/p0031r0
[P0032R3] Vicente J. Botet Escriba. 2016-05-24. variant、any 和 optional 的同构接口(修订版 3)。
https://wg21.link/p0032r3
[P0033R1] Jonathan Wakely, Peter Dimov. 2015-10-24. 重新启用 shared_from_this(修订版 1)。
https://wg21.link/p0033r1
[P0035R4] Clark Nelson. 2016-06-21. 对齐数据的动态内存分配。
https://wg21.link/p0035r4
[P0036R0] Thibaut Le Jehan. 2015-09-10. 一元折叠和空参数包(修订版 1)。
https://wg21.link/p0036r0
[P0040R3] Brent Friedman. 2016-06-24. 扩展内存管理工具。
https://wg21.link/p0040r3
[P0053R7] Lawrence Crowl, Peter Sommerlad, Nicolai Josuttis, Pablo Halpern. 2017-11-07. C++ 同步缓冲输出流。
https://wg21.link/p0053r7
[P0067R5] Jens Maurer. 2016-11-11. 基本字符串转换,修订版 5。
https://wg21.link/p0067r5
[P0074R0] Jonathan Wakely. 2015-09-23. 使 std::owner_less 更灵活。
https://wg21.link/p0074r0
[P0083R3] Alan Talbot, Jonathan Wakely, Howard Hinnant, James Dennett. 2016-06-24. 拼接映射和集合(修订版 5)。
https://wg21.link/p0083r3
[P0088R3] Axel Naumann. 2016-06-23. Variant:C++17 的类型安全 union (v8)。
https://wg21.link/p0088r3
[P0091R3] Mike Spertus, Faisal Vali, Richard Smith. 2016-06-24. 类模板的模板参数推导(修订版 6)。
https://wg21.link/p0091r3
[P0092R1] Howard Hinnant. 2015-10-20. 完善。
https://wg21.link/p0092r1
[P0122R7] Neil MacIntosh, Stephan T. Lavavej. 2018-03-16. span:对象的序列的边界安全视图。
https://wg21.link/p0122r7
[P0127R2] James Touton, Mike Spertus. 2016-06-23. 用 auto 声明非类型模板参数。
https://wg21.link/p0127r2
[P0135R1] Richard Smith. 2016-06-20. 通过简化值类别保证拷贝消除的措辞。
https://wg21.link/p0135r1
[P0136R1] Richard Smith. 2015-10-19. 重新措辞继承构造函数(核心问题 1941 等)。
https://wg21.link/p0136r1
[P0137R1] Richard Smith. 2016-06-23. 核心问题 1776:包含引用成员的类对象的替换。
https://wg21.link/p0137r1
[P0152R1] Olivier Giroux, JF Bastien, Jeff Snyder. 2016-03-02. constexpr atomic<T>::is_always_lock_free。
https://wg21.link/p0152r1
[P0154R1] JF Bastien, Olivier Giroux. 2016-03-03. constexpr std::thread::hardware_{true,false}_sharing_size。
https://wg21.link/p0154r1
[P0156R2] Mike Spertus. 2017-03-03. Variadic lock_guard(修订版 4)。
https://wg21.link/p0156r2
[P0163R0] Arthur O’Dwyer. 2015-10-23. shared_ptr::weak_type。
https://wg21.link/p0163r0
[P0170R1] Faisal Vali. 2016-03-01. Constexpr Lambda 的措辞。
https://wg21.link/p0170r1
[P0184R0] Eric Niebler. 2016-02-11. 广义基于范围的 for 循环。
https://wg21.link/p0184r0
[P0185R1] Daniel Krugler. 2016-03-01. 添加 [nothrow-]swappable 特性,修订版 3。
https://wg21.link/p0185r1
[P0188R1] Andrew Tomazos. 2016-02-29. [[fallthrough]] 属性的措辞。
https://wg21.link/p0188r1
[P0189R1] Andrew Tomazos. 2016-02-29. [[nodiscard]] 属性的措辞。
https://wg21.link/p0189r1
[P0195R2] Robert Haberlach, Richard Smith. 2016-11-08. using-declarations 中的包扩展。
https://wg21.link/p0195r2
[P0202R3] Antony Polukhin. 2017-11-09. 向 <algorithm><utility> 头文件中的函数添加 Constexpr 修饰符。
https://wg21.link/p0202r3
[P0209R2] Pablo Halpern. 2016-06-23. make_from_tuple: 构造时的应用。
https://wg21.link/p0209r2
[P0212R1] Andrew Tomazos. 2016-03-01. [[maybe_unused]] 属性的措辞。
https://wg21.link/p0212r1
[P0217R3] Jens Maurer. 2016-06-24. 结构化绑定提议措辞。
https://wg21.link/p0217r3
[P0218R1] Beman Dawes. 2016-03-05. 采用 C++17 的文件系统 TS。
https://wg21.link/p0218r1
[P0219R1] Beman Dawes. 2016-06-24. 文件系统的相对路径。
https://wg21.link/p0219r1
[P0220R1] Beman Dawes. 2016-03-03. 采用 C++17 的 Library Fundamentals V1 TS 组件(R1)。
https://wg21.link/p0220r1
[P0226R1] Walter E. Brown, Axel Naumann, Edward Smith-Rowland. 2016-02-29. C++17 的数学特殊函数,v5。
https://wg21.link/p0226r1
[P0245R1] Thomas Koeppe. 2016-03-04. C++ 的十六进制浮点字面量。
https://wg21.link/p0245r1
[P0254R2] Marshall Clow. 2016-06-24. 集成 std::string_view 和 std::string。
https://wg21.link/p0254r2
[P0258R2] Michael Spencer. 2016-06-24. has_unique_object_representations - 措辞。
https://wg21.link/p0258r2
[P0288R9] Matt Calabrese, Ryan McDougall. 2021-08-27. move_only_function(原 any_invocable)。
https://wg21.link/p0288r9
[P0292R2] Jens Maurer. 2016-06-20. constexpr if:稍微不同的语法。
https://wg21.link/p0292r2
[P0295R0] Walter E. Brown. 2016-03-01. 采用 C++17 的 Library Fundamentals V2 精选组件。
https://wg21.link/p0295r0
[P0298R3] Neil MacIntosh. 2017-03-03. 字节类型定义。
https://wg21.link/p0298r3
[P0307R2] Tony Van Eerd. 2016-03-15. 使 Optional 再次相等。
https://wg21.link/p0307r2
[P0317R1] Beman Dawes. 2016-10-15. 文件系统的目录项缓存。
https://wg21.link/p0317r1
[P0318R1] Vicente J. Botet Escribá。2018-03-30。unwrap_ref_decay 和 unwrap_reference。
https://wg21.link/p0318r1
[P0323R12] Vicente Botet、JF Bastien、Jonathan Wakely。2022-01-07。std::expected。
https://wg21.link/p0323r12
[P0325R4] 袁志豪。2019-07-29。从 LFTS 到 to_array 并更新。
https://wg21.link/p0325r4
[P0329R4] Tim Shen、Richard Smith。2017-07-12。指定初始化措辞。
https://wg21.link/p0329r4
[P0330R8] JeanHeyd Meneide、Rein Halbersma。2020-01-11。(signed) size_t 的字面量后缀。
https://wg21.link/p0330r8
[P0339R6] Pablo Halpern、Dietmar Kühl。2019-02-22。polymorphic_allocator<> 作为词汇类型。
https://wg21.link/p0339r6
[P0355R7] Howard E. Hinnant、Tomasz Kamiński。2018-03-16。将 扩展到日历和时区。
https://wg21.link/p0355r7
[P0356R5] Tomasz Kamiński。2018-11-09。简化部分函数应用。
https://wg21.link/p0356r5
[P0386R2] Hal Finkel、Richard Smith。2016-06-24。内联变量。
https://wg21.link/p0386r2
[P0392R0] Nicolai Josuttis。2016-06-23。通过文件系统路径调整 string_view。
https://wg21.link/p0392r0
[P0393R3] Tony Van Eerd。2016-06-21。使 Variant 大于等于。
https://wg21.link/p0393r3
[P0401R6] Chris Kennelly、Jonathan Wakely。2021-02-15。在 Allocator 接口中提供大小反馈。
https://wg21.link/p0401r6
[P0415R1] Antony Polukhin。2016-11-10。std::complex 的 constexpr。
https://wg21.link/p0415r1
[P0426R1] Antony Polukhin。2016-11-08。std::char_traits 的 constexpr。
https://wg21.link/p0426r1
[P0428R2] Louis Dionne。2017-07-13。通用 lambda 的熟悉模板语法。
https://wg21.link/p0428r2
[P0429R9] Zach Laine。2022-06-17。标准 flat_map。
https://wg21.link/p0429r9
[P0433R2] Mike Spertus、Walter E. Brown、Stephan T. Lavavej。2017-03-03。US7 和 US14 解决方案:将类模板的模板推导集成到标准库中。
https://wg21.link/p0433r2
[P0447R28] Matt Bentley。2024-12-16。std::hive 引入标准库。
https://wg21.link/p0447r28
[P0448R4] Peter Sommerlad。2021-03-01。使用 span 作为缓冲区的 strstream 替代。
https://wg21.link/p0448r4
[P0457R2] Mikhail Maltsev。2017-11-11。字符串前缀和后缀检查。
https://wg21.link/p0457r2
[P0463R1] Howard Hinnant。2017-07-13。endian,就是 endian。
https://wg21.link/p0463r1
[P0466R5] Lisa Lippincott。2019-07-26。布局兼容性与指针互转换性特性。
https://wg21.link/p0466r5
[P0476R2] JF Bastien。2017-11-10。位铸造对象表示。
https://wg21.link/p0476r2
[P0479R5] Clay Trychta。2018-03-16。likely 和 unlikely 属性的建议措辞。
https://wg21.link/p0479r5
[P0482R6] Tom Honermann。2018-11-09。char8_t:UTF-8 字符和字符串的类型(修订版 6)。
https://wg21.link/p0482r6
[P0493R5] Al Grant、Al Grant、Bronek Kozicki、Tim Northover。2024-02-12。原子最大/最小值。
https://wg21.link/p0493r5
[P0497R0] Jonathan Wakely。2016-11-10。修复 shared_ptr 对数组的支持。
https://wg21.link/p0497r0
[P0505R0] Howard Hinnant。2016-11-09。GB 50 的措辞。
https://wg21.link/p0505r0
[P0512R0] Mike Spertus、Richard Smith、Faisal Vali。2016-11-10。类模板参数推导杂项 NB 解决方案和问题。
https://wg21.link/p0512r0
[P0515R3] Herb Sutter、Jens Maurer、Walter E. Brown。2017-11-10。一致性比较。
https://wg21.link/p0515r3
[P0522R0] James Touton、Hubert Tong。2016-11-11。DR:模板模板参数的匹配排除兼容模板。
https://wg21.link/p0522r0
[P0533R9] Oliver Rosten、Edward Rosten。2021-11-12。cmath 和 cstdlib 的 constexpr。
https://wg21.link/p0533r9
[P0543R3] Jens Maurer。2023-07-19。饱和算术。
https://wg21.link/p0543r3
[P0550R2] Walter E. Brown。2017-07-17。转换特性 remove_cvref。
https://wg21.link/p0550r2
[P0553R4] Jens Maurer。2019-03-01。位操作。
https://wg21.link/p0553r4
[P0556R3] Jens Maurer。2018-06-06。整数幂操作。
https://wg21.link/p0556r3
[P0586R2] Federico Kircheis。2020-02-12。安全整数比较。
https://wg21.link/p0586r2
[P0595R2] Richard Smith、Andrew Sutton、Daveed Vandevoorde。2018-11-09。std::is_constant_evaluated。
https://wg21.link/p0595r2
[P0604R0] Daniel Krugler、Pablo Halpern、Jonathan Wakely。2017-03-03。解决 GB 55、US 84、US 85、US 86。
https://wg21.link/p0604r0
[P0609R3] Aaron Ballman。2024-03-21。结构化绑定属性。
https://wg21.link/p0609r3
[P0620R0] Jason Merrill。2017-03-02。类模板参数推导问题的草案。
https://wg21.link/p0620r0
[P0627R6] Jens Maurer。2021-10-25。标记不可达代码的函数。
https://wg21.link/p0627r6
[P0631R8] Lev Minkovsky、John McFarlane。2019-07-28。数学常数。
https://wg21.link/p0631r8
[P0645R10] Victor Zverovich。2019-07-18。文本格式化。
https://wg21.link/p0645r10
[P0646R1] Marc Mutz。2018-06-08。改进擦除类算法的返回值 I:list/forward list。
https://wg21.link/p0646r1
[P0653R2] Glen Joseph Fernandes。2017-11-09。将指针转换为原始指针的工具。
https://wg21.link/p0653r2
[P0660R10] Nicolai Josuttis、Lewis Baker、Billy O’Neal、Herb Sutter、Anthony Williams。2019-07-21。停止令牌和连接线程。
https://wg21.link/p0660r10
[P0674R1] Peter Dimov、Glen Fernandes。2017-07-12。扩展 make_shared 以支持数组。
https://wg21.link/p0674r1
[P0682R1] Jens Maurer。2017-07-12。修复基本字符串转换。
https://wg21.link/p0682r1
[P0718R2] Alisdair Meredith。2017-11-10。修订 C++20 的 atomic_shared_ptr。
https://wg21.link/p0718r2
[P0722R3] Richard Smith、Andrew Hunter。2018-03-17。可变大小类的有效大小删除。
https://wg21.link/p0722r3
[P0732R2] Jeff Snyder、Louis Dionne。2018-06-06。非类型模板参数中的类类型。
https://wg21.link/p0732r2
[P0734R0] Andrew Sutton。2017-07-14。措辞文件,C++ 概念扩展。
https://wg21.link/p0734r0
[P0753R2] Peter Sommerlad、Pablo Halpern。2018-03-16。C++ 同步缓冲 Ostream 的操纵器。
https://wg21.link/p0753r2
[P0754R2] Alan Talbot。2018-03-13。
https://wg21.link/p0754r2
[P0758R1] Daniel Krügler。2018-06-06。隐式转换特性和实用函数。
https://wg21.link/p0758r1
[P0768R1] Walter E. Brown。2017-11-10。飞船(比较)运算符的库支持。
https://wg21.link/p0768r1
[P0769R2] Dan Raviv。2018-06-06。将 shift 添加到
https://wg21.link/p0769r2
[P0780R2] Barry Revzin。2018-03-14。允许在 lambda init-capture 中进行包展开。
https://wg21.link/p0780r2
[P0784R7] Daveed Vandevoorde、Peter Dimov、Louis Dionne、Nina Ranns、Richard Smith、Daveed Vandevoorde。2019-07-22。更多 constexpr 容器。
https://wg21.link/p0784r7
[P0792R14] Vittorio Romeo、袁志豪、Jarrad Waterloo。2023-02-09。function_ref:对 Callable 的非拥有引用。
https://wg21.link/p0792r14
[P0798R8] Sy Brand。2021-10-15。std::optional 的单子操作。
https://wg21.link/p0798r8
[P0811R3] S. Davis Herring。2019-02-22。数字和指针的良好插值。
https://wg21.link/p0811r3
[P0840R2] Richard Smith。2018-03-12。空对象的语言支持。
https://wg21.link/p0840r2
[P0843R14] Gonzalo Brito Gadeschi、Timur Doumler、Nevin Liber、David Sankel。2024-06-26。inplace_vector。
https://wg21.link/p0843r14
[P0847R7] Barry Revzin、Gašper Ažman、Sy Brand、Ben Deane。2021-07-14。推导 this。
https://wg21.link/p0847r7
[P0848R3] Barry Revzin、Casey Carter。2019-07-28。条件性平凡的特殊成员函数。
https://wg21.link/p0848r3
[P0858R0] Antony Polukhin。2017-11-11。constexpr 迭代器要求。
https://wg21.link/p0858r0
[P0859R0] Richard Smith。2017-11-09。核心问题 1581:constexpr 成员函数何时定义?
https://wg21.link/p0859r0
[P0879R0] Antony Polukhin。2017-12-29。swap 和相关函数的 constexpr。
https://wg21.link/p0879r0
[P0881R7] Antony Polukhin、Alexey Gorgurov。2020-09-16。添加堆栈跟踪库的提案。
https://wg21.link/p0881r7
[P0883R2] Nicolai Josuttis。2019-11-08。修复原子初始化。
https://wg21.link/p0883r2
[P0887R1] Timur Doumler。2018-03-18。identity 元函数。
https://wg21.link/p0887r1
[P0892R2] Barry Revzin、Stephan T. Lavavej。2018-06-08。explicit(bool)。
https://wg21.link/p0892r2
[P0896R4] Eric Niebler、Casey Carter、Christopher Di Bella。2018-11-09。Ranges 提案。
https://wg21.link/p0896r4
[P0898R3] Casey Carter、Eric Niebler。2018-06-08。标准库概念。
https://wg21.link/p0898r3
[P0912R5] Gor Nishanov。2019-02-22。将 Coroutines TS 合并到 C++20 工作草案。
https://wg21.link/p0912r5
[P0919R3] Mateusz Pusz。2018-11-09。无序容器的异构查找。
https://wg21.link/p0919r3
[P0920R2] Mateusz Pusz。2019-02-22。查找中的预计算哈希值。
https://wg21.link/p0920r2
[P0943R6] Hans Boehm。2020-11-15。在 C++ 中支持 C 原子。
https://wg21.link/p0943r6
[P0960R3] Ville Voutilainen、Thomas Köppe。2019-02-22。允许从括号括起来的值列表中初始化聚合。
https://wg21.link/p0960r3
[P0980R1] Louis Dionne。2019-07-19。使 std::string constexpr。
https://wg21.link/p0980r1
[P1001R2] Alisdair Meredith、Pablo Halpern。2019-02-22。从 Parallelism V2 TS 到 C++20 的目标向量化策略。
https://wg21.link/p1001r2
[P1002R1] Louis Dionne。2018-11-10。constexpr 函数中的 try-catch 块。
https://wg21.link/p1002r1
[P1004R2] Louis Dionne。2019-07-19。使 std::vector constexpr。
https://wg21.link/p1004r2
[P1006R1] Louis Dionne。2018-10-07。std::pointer_traits 中的 constexpr。
https://wg21.link/p1006r1
[P1007R3] Timur Doumler、Chandler Carruth。2018-11-07。std::assume_aligned。
https://wg21.link/p1007r3
[P1020R1] Glen Joseph Fernandes、Peter Dimov。2018-11-06。带默认初始化的智能指针创建。
https://wg21.link/p1020r1
[P1023R0] Tristan Brindle。2018-05-06。std::array 的 constexpr 比较运算符。
https://wg21.link/p1023r0
[P1024R3] Tristan Brindle。2019-02-22。std::span 的可用性增强。
https://wg21.link/p1024r3
[P1032R1] Antony Polukhin。2018-10-01。杂项 constexpr 位。
https://wg21.link/p1032r1
[P1035R7] Christopher Di Bella、Casey Carter、Corentin Jabot。2019-08-02。输入 Range Adaptors。
https://wg21.link/p1035r7
[P1048R1] Juan Alday。2020-10-16。检测作用域枚举的类型特性提案。
https://wg21.link/p1048r1
[P1061R10] Barry Revzin、Jonathan Wakely。2024-11-24。结构化绑定可以引入一个包。
https://wg21.link/p1061r10
[P1064R0] Peter Dimov、Vassil Vassilev。2018-05-04。允许在常量表达式中进行虚函数调用。
https://wg21.link/p1064r0
[P1065R2] Barry Revzin、Tomasz Kaminski。2019-07-28。constexpr INVOKE。
https://wg21.link/p1065r2
[P1068R11] Ilya Burylov、Pavel Dyakov、Ruslan Arutyunyan、Andrey Nikolaev、Alina Elizarova。2024-04-02。随机数生成的向量 API。
https://wg21.link/p1068r11
[P1072R10] Chris Kennelly、Mark Zeren。2021-09-15。basic_string::resize_and_overwrite。
https://wg21.link/p1072r10
[P1073R3] Richard Smith、Andrew Sutton、Daveed Vandevoorde。2018-11-06。即时函数。
https://wg21.link/p1073r3
[P1084R2] Walter E. Brown、Casey Carter。2018-11-06。今天的返回类型要求不足。
https://wg21.link/p1084r2
[P1099R5] Gašper Ažman、Jonathan Mueller。2019-07-20。使用 Enum。
https://wg21.link/p1099r5
[P1103R3] Richard Smith。2019-02-22。合并模块。
https://wg21.link/p1103r3
[P1115R3] Marc Mutz。2019-11-25。改进擦除类算法的返回值 II:Free erase/erase if。
https://wg21.link/p1115r3
[P1132R7] JeanHeyd Meneide、Todor Buyukliev、Isabella Muerte。2021-04-16。out_ptr - 可伸缩的输出指针抽象。
https://wg21.link/p1132r7
[P1135R6] David Olsen、Olivier Giroux、JF Bastien、Detlef Vollmann、Bryce Lelbach。2019-07-20。C++20 同步库。
https://wg21.link/p1135r6
[P1143R2] Eric Fiselier。2019-07-18。添加 constinit 关键字。
https://wg21.link/p1143r2
[P1169R4] Barry Revzin、Casey Carter。2022-04-11。static operator()。
https://wg21.link/p1169r4
[P1185R2] Barry Revzin。2019-02-22。<=> != ==。
https://wg21.link/p1185r2
[P1206R7] Corentin Jabot、Eric Niebler、Casey Carter。2022-01-21。从 ranges 到容器的转换。
https://wg21.link/p1206r7
[P1208R6] Corentin Jabot、Robert Douglas、Daniel Krugler、Peter Sommerlad。2019-08-02。采纳 Library Fundamentals V3 中的源位置用于 C++20。
https://wg21.link/p1208r6
[P1209R0] Alisdair Meredith、Stephan T. Lavavej。2018-10-04。采纳 Library Fundamentals 2 中的一致容器擦除用于 C++20。
https://wg21.link/p1209r0
[P1222R4] Zach Laine。2022-06-13。标准 flat_set。
https://wg21.link/p1222r4
[P1223R5] Zach Laine。2022-06-17。find_last。
https://wg21.link/p1223r5
[P1227R2] Jorg Brown。2019-02-22。带符号的 ssize() 函数,无符号的 size() 函数。
https://wg21.link/p1227r2
[P1272R4] Isabella Muerte、Corentin Jabot。2021-09-25。字节交换是为了好玩&&足够。
https://wg21.link/p1272r4
[P1301R4] JeanHeyd Meneide、Isabella Muerte。2019-08-05。[[nodiscard(“should have a reason”)]]。
https://wg21.link/p1301r4
[P1327R1] Peter Dimov、Vassil Vassilev、Richard Smith。2018-11-08。允许在常量表达式中进行 dynamic_cast、多态 typeid。
https://wg21.link/p1327r1
[P1328R1] Peter Dimov。2021-05-03。使 std::type_info::operator== constexpr。
https://wg21.link/p1328r1
[P1330R0] Louis Dionne、David Vandevoorde。2018-11-10。在 constexpr 内部更改 union 的活动成员。
https://wg21.link/p1330r0
[P1331R2] CJ Johnson。2019-07-26。允许在 constexpr 上下文中进行平凡默认初始化。
https://wg21.link/p1331r2
[P1353R0] John Spicer。2017-11-09。缺失的功能测试宏。
https://wg21.link/p1353r0
[P1357R1] Walter E. Brown、Glen J. Fernandes。2019-02-22。用于 [Un]bounded Arrays 的特性。
https://wg21.link/p1357r1
[P1361R2] Victor Zverovich、Daniela Engert、Howard E. Hinnant。2019-07-19。chrono 与文本格式化的集成。
https://wg21.link/p1361r2
[P1383R2] Oliver Rosten。2023-06-15。cmath 和 complex 的更多 constexpr。
https://wg21.link/p1383r2
[P1423R3] Tom Honermann。2019-07-20。char8_t 向后兼容性补救措施。
https://wg21.link/p1423r3
[P1425R4] Corentin Jabot。2021-03-05。堆栈和队列的迭代器对构造函数。
https://wg21.link/p1425r4
[P1452R2] Hubert Tong。2019-07-18。关于返回类型要求的非统一语义。
https://wg21.link/p1452r2
[P1466R3] Howard E. Hinnant。2019-07-17。chrono 的杂项小修复。
https://wg21.link/p1466r3
[P1612R1] Arthur O’Dwyer。2019-07-20。迁移 Endian 的规范。
https://wg21.link/p1612r1
[P1614R2] Barry Revzin。2019-07-28。母舰已着陆:向库添加 <=>。
https://wg21.link/p1614r2
[P1630R1] Barry Revzin。2019-07-17。飞船需要调整。
https://wg21.link/p1630r1
[P1645R1] Ben Deane。2019-05-14。数值算法的 constexpr。
https://wg21.link/p1645r1
[P1651R0] Tomasz Kamiński。2019-06-07。bind_front 不应解包 reference_wrapper。
https://wg21.link/p1651r0
[P1652R1] 袁志豪、Victor Zverovich。2019-07-18。std::format 中的 Printf 边界情况。
https://wg21.link/p1652r1
[P1659R3] Christopher Di Bella。2021-02-19。starts_with 和 ends_with。
https://wg21.link/p1659r3
[P1661R1] Tomasz Kamiński。2019-07-18。移除专用预计算哈希查找接口。
https://wg21.link/p1661r1
[P1668R1] Erich Keane。2019-07-17。通过允许在 constexpr 函数中使用未评估的内联汇编来启用 constexpr 本征。
https://wg21.link/p1668r1
[P1673R13] Mark Hoemmen、Daisy Hollman、Christian Trott、Daniel Sunderland、Nevin Liber、Alicia Klinvex、Li-Ta Lo、Damien Lebrun-Grandie、Graham Lopez、Peter Caday、Sarah Knepper、Piotr Luszczek、Timothy Costa。2023-12-18。基于 BLAS 的自由函数线性代数接口。
https://wg21.link/p1673r13
[P1679R3] Wim Leflere、Paul Fee。2020-07-22。字符串包含函数。
https://wg21.link/p1679r3
[P1682R2] JeanHeyd Meneide。2021-01-16。std::to_underlying。
https://wg21.link/p1682r2
[P1716R3] Tomasz Kamiński。2019-11-07。ranges 比较算法过度受限。
https://wg21.link/p1716r3
[P1754R1] Herb Sutter、Casey Carter、Gabriel Dos Reis、Eric Niebler、Bjarne Stroustrup、Andrew Sutton、Ville Voutilainen。2019-07-18。在 C++20 中将概念重命名为 standard_case,趁我们还能。
https://wg21.link/p1754r1
[P1759R6] Elias Kosunen。2023-05-17。原生句柄和文件流。
https://wg21.link/p1759r6
[P1771R1] Peter Sommerlad。2019-07-19。构造函数的 [[nodiscard]]。
https://wg21.link/p1771r1
[P1774R8] Timur Doumler。2022-06-14。可移植的假设。
https://wg21.link/p1774r8
[P1811R0] Richard Smith、Gabriel Dos Reis。2019-08-07。放宽重新定义限制以提高再导出鲁棒性。
https://wg21.link/p1811r0
[P1814R0] Mike Spertus。2019-07-28。Alias Templates 的类模板参数推导的措辞。
https://wg21.link/p1814r0
[P1816R0] Timur Doumler。2019-07-18。聚合类的模板参数推导的措辞。
https://wg21.link/p1816r0
[P1869R1] Tomasz Kamiński、Michał Dominiak。2019-11-06。重命名“condition_variable_any”可中断等待方法。
https://wg21.link/p1869r1
[P1885R12] Corentin Jabot、Peter Brett。2023-04-05。命名文本编码以使其神秘化。
https://wg21.link/p1885r12
[P1899R3] Christopher Di Bella、Tim Song。2022-07-11。stride_view。
https://wg21.link/p1899r3
[P1901R2] Daryl Haresign。2023-04-05。启用 weak_ptr 作为无序关联容器中的键。
https://wg21.link/p1901r2
[P1902R1] Barry Revzin。2019-11-25。缺失的功能测试宏 2017-2019。
https://wg21.link/p1902r1
[P1907R1] Jens Maurer。2019-11-08。非类型模板参数的不一致性。
https://wg21.link/p1907r1
[P1928R15] Matthias Kretz。2024-11-22。std::simd - 合并 Parallelism TS 2 中的数据并行类型。
https://wg21.link/p1928r15
[P1938R3] Barry Revzin、Daveed Vandevoorde、Richard Smith、Andrew Sutton。2021-03-22。if consteval。
https://wg21.link/p1938r3
[P1956R1] Vincent Reverdy。2020-02-27。关于低级位操作函数的命名。
https://wg21.link/p1956r1
[P1964R2] Tim Song。2020-02-15。布尔可测试的措辞。
https://wg21.link/p1964r2
[P1973R1] Nicolai Josuttis。2020-02-12。重命名 _default_init 函数(NB 评论 DE002)。
https://wg21.link/p1973r1
[P1976R2] Tomasz Kamiński。2020-02-11。从动态大小范围构建固定大小的“span”。
https://wg21.link/p1976r2
[P2071R2] Tom Honermann、Steve Downey、Peter Bindels、Corentin Jabot、R. Martinho Fernandes。2022-03-27。命名通用字符转义。
https://wg21.link/p2071r2
[P2075R6] Ilya Burylov、Ruslan Arutyunyan;Andrey Nikolaev;Alina Elizarova;Pavel Dyakov;John Salmon。2024-06-28。Philox 作为 C++ RNG 引擎的扩展。
https://wg21.link/p2075r6
[P2077R3] Konstantin Boyarinov、Sergey Vinogradov;Ruslan Arutyunyan。2021-10-15。关联容器的异构擦除重载。
https://wg21.link/p2077r3
[P2093R14] Victor Zverovich。2022-03-25。格式化输出。
https://wg21.link/p2093r14
[P2128R6] Corentin Jabot、Isabella Muerte、Daisy Hollman、Christian Trott、Mark Hoemmen。2021-09-14。多维下标运算符。
https://wg21.link/p2128r6
[P2136R3] 袁志豪。2021-04-30。invoke_r。
https://wg21.link/p2136r3
[P2162R2] Barry Revzin。2021-02-18。从 std::variant 继承(解决 LWG3052)。
https://wg21.link/p2162r2
[P2164R9] Corentin Jabot。2022-12-07。views::enumerate。
https://wg21.link/p2164r9
[P2165R4] Corentin Jabot。2022-07-15。tuple、pair 和类 tuple 对象之间的兼容性。
https://wg21.link/p2165r4
[P2169R4] Corentin Jabot、Michael Park。2023-06-16。一个没有名字的漂亮占位符。
https://wg21.link/p2169r4
[P2198R7] Ben Craig。2022-12-14。独立功能测试宏和实现定义扩展。
https://wg21.link/p2198r7
[P2216R3] Victor Zverovich。2021-02-15。std::format 改进。
https://wg21.link/p2216r3
[P2231R1] Barry Revzin。2021-02-12。为 optional/variant 添加进一步的 constexpr 支持。
https://wg21.link/p2231r1
[P2242R3] Ville Voutilainen。2021-07-13。constexpr 函数中的非字面量变量(和标签以及 goto)。
https://wg21.link/p2242r3
[P2248R8] Giuseppe D’Angelo。2024-03-20。启用算法的列表初始化。
https://wg21.link/p2248r8
[P2255R2] Tim Song。2021-10-14。检测引用绑定到临时变量的类型特性。
https://wg21.link/p2255r2
[P2266R3] Arthur O’Dwyer。2022-03-26。更简单的隐式移动。
https://wg21.link/p2266r3
[P2273R3] Andreas Fertig。2021-11-09。使 std::unique_ptr constexpr。
https://wg21.link/p2273r3
[P2278R4] Barry Revzin。2022-06-17。cbegin 应该始终返回一个常量迭代器。
https://wg21.link/p2278r4
[P2286R8] Barry Revzin。2022-05-16。格式化范围。
https://wg21.link/p2286r8
[P2291R3] Daniil Goncharov、Karaev Alexander。2021-09-23。在头文件中为整数类型的函数 to_chars 和 from_chars 添加 constexpr 修饰符。
https://wg21.link/p2291r3
[P2300R10] Eric Niebler、Michał Dominiak、Georgy Evtushenko、Lewis Baker、Lucian Radu Teodorescu、Lee Howes、Kirk Shoop、Michael Garland、Bryce Adelstein Lelbach。2024-06-28。`std::execution`。
https://wg21.link/p2300r10
[P2302R4] Christopher Di Bella。2022-04-17。std::ranges::contains。
https://wg21.link/p2302r4
[P2321R2] Tim Song。2021-06-11。zip。
https://wg21.link/p2321r2
[P2322R6] Barry Revzin。2022-04-22。ranges::fold。
https://wg21.link/p2322r6
[P2325R3] Barry Revzin。2021-05-14。视图不应要求默认构造。
https://wg21.link/p2325r3
[P2338R4] Ben Craig。2023-02-09。独立库:字符原语和 C 库。
https://wg21.link/p2338r4
[P2363R5] Konstantin Boyarinov、Sergey Vinogradov、Ruslan Arutyunyan。2023-02-10。扩展关联容器与剩余的异构重载。
https://wg21.link/p2363r5
[P2372R3] Victor Zverovich、Corentin Jabot。2021-09-12。修复 chrono 格式化程序中的区域设置处理。
https://wg21.link/p2372r3
[P2374R4] Sy Brand、Michał Dominiak。2022-07-13。views::cartesian_product。
https://wg21.link/p2374r4
[P2387R3] Barry Revzin。2021-12-17。用户定义范围适配器的管道支持。
https://wg21.link/p2387r3
[P2389R2] Bryce Adelstein Lelbach、Mark Hoemmen。2024-06-24。`dextents` 索引类型参数。
https://wg21.link/p2389r2
[P2404R3] Justin Bassett。2022-07-08。equality_comparable_with、totally_ordered_with 和 three_way_comparable_with 的只移动类型。
https://wg21.link/p2404r3
[P2407R5] Ben Craig、Emil Meissner。2023-07-26。独立库:部分类。
https://wg21.link/p2407r5
[P2408R5] David Olsen。2022-04-22。范围迭代器作为非范围算法的输入。
https://wg21.link/p2408r5
[P2415R2] Barry Revzin、Tim Song。2021-10-15。什么是视图?
https://wg21.link/p2415r2
[P2417R2] Daniil Goncharov。2022-07-16。更 constexpr 的 bitset。
https://wg21.link/p2417r2
[P2418R2] Victor Zverovich。2021-09-24。为 std::format 添加对 std::generator-like 类型支持。
https://wg21.link/p2418r2
[P2419R2] Victor Zverovich、Peter Brett。2022-07-15。澄清 chrono 类型本地化格式化中编码的处理。
https://wg21.link/p2419r2
[P2440R1] Tim Song。2021-12-06。ranges::iota、ranges::shift_left 和 ranges::shift_right。
https://wg21.link/p2440r1
[P2441R2] Barry Revzin。2022-01-28。views::join_with。
https://wg21.link/p2441r2
[P2442R1] Tim Song。2021-12-06。窗口化范围适配器:views::chunk 和 views::slide。
https://wg21.link/p2442r1
[P2443R1] Tim Song。2021-11-19。views::chunk_by。
https://wg21.link/p2443r1
[P2445R1] Gašper Ažman。2022-05-13。forward_like。
https://wg21.link/p2445r1
[P2446R2] Barry Revzin。2022-02-15。views::as_rvalue。
https://wg21.link/p2446r2
[P2447R6] Arthur O’Dwyer、Federico Kircheis。2023-12-18。初始化列表上的 std::span。
https://wg21.link/p2447r6
[P2448R2] Barry Revzin。2022-01-27。放宽一些 constexpr 限制。
https://wg21.link/p2448r2
[P2465R3] Stephan T. Lavavej、Gabriel Dos Reis、Bjarne Stroustrup、Jonathan Wakely。2022-03-11。标准库模块 std 和 std.compat。
https://wg21.link/p2465r3
[P2467R1] Jonathan Wakely。2022-02-18。支持 fstream 的独占模式。
https://wg21.link/p2467r1
[P2474R2] Michał Dominiak。2022-07-13。views::repeat。
https://wg21.link/p2474r2
[P2494R2] Michał Dominiak。2022-07-13。放宽范围适配器以允许只移动类型。
https://wg21.link/p2494r2
[P2495R3] Michael Hava。2023-04-19。字符串流与 string_view 的接口。
https://wg21.link/p2495r3
[P2497R0] Jonathan Wakely。2023-01-25。测试 charconv 函数的成功或失败。
https://wg21.link/p2497r0
[P2502R2] Casey Carter。2022-06-03。std::generator:Ranges 的同步协程生成器。
https://wg21.link/p2502r2
[P2505R5] Jeff Garland。2022-09-28。std::expected 的单子函数。
https://wg21.link/p2505r5
[P2508R1] Barry Revzin。2022-01-18。公开 std::basic-format-string。
https://wg21.link/p2508r1
[P2510R3] Mark de Wever。2022-05-23。格式化指针。
https://wg21.link/p2510r3
[P2513R3] JeanHeyd Meneide、Tom Honermann。2022-06-17。char8_t 兼容性和可移植性修复。
https://wg21.link/p2513r3
[P2520R0] Barry Revzin。2022-01-16。move_iterator 应该是随机访问迭代器。
https://wg21.link/p2520r0
[P2540R1] Steve Downey。2022-03-14。某些视图的空积。
https://wg21.link/p2540r1
[P2542R8] Hui Xie、S. Levent Yilmaz。2024-03-20。views::concat。
https://wg21.link/p2542r8
[P2545R4] Paul E. McKenney、Michael Wong、Maged M. Michael、Geoffrey Romer、Andrew Hunter、Arthur O’Dwyer、Daisy Hollman、JF Bastien、Hans Boehm、David Goldblatt、Frank Birbacher、Erik Rigtorp、Tomasz Kamiński、Jens Maurer。2023-03-08。读复制更新 (RCU)。
https://wg21.link/p2545r4
[P2546R5] René Ferdinand Rivera Morell。2023-07-05。调试支持。
https://wg21.link/p2546r5
[P2548R6] Michael Florian Hava。2023-06-15。copyable_function。
https://wg21.link/p2548r6
[P2562R1] Oliver Rosten。2022-06-14。constexpr 稳定排序。
https://wg21.link/p2562r1
[P2564R3] Barry Revzin。2022-11-11。consteval 需要向上传播。
https://wg21.link/p2564r3
[P2573R2] Yihe Li。2024-03-22。= delete(“should have a reason”);
https://wg21.link/p2573r2
[P2585R1] Barry Revzin。2022-07-15。改进默认容器格式化。
https://wg21.link/p2585r1
[P2587R3] Victor Zverovich。2022-08-28。to_string 或 not to_string。
https://wg21.link/p2587r3
[P2588R3] Gonzalo Brito、Eric A Niebler、Anthony Williams、Thomas Rodgers。2023-02-07。放宽 std::barrier 阶段完成步骤保证。
https://wg21.link/p2588r3
[P2589R1] Nevin Liber。2022-11-11。static operator[]。
https://wg21.link/p2589r1
[P2590R2] Timur Doumler、Richard Smith。2022-07-15。显式生命周期管理。
https://wg21.link/p2590r2
[P2591R5] Giuseppe D’Angelo。2024-03-20。字符串和 string_view 的连接。
https://wg21.link/p2591r5
[P2592R3] Giuseppe D’Angelo。2023-02-10。std::chrono 值类的哈希支持。
https://wg21.link/p2592r3
[P2599R2] Nevin Liber。2022-06-23。mdspan 中的 index_type 和 size_type。
https://wg21.link/p2599r2
[P2602R2] Barry Revzin。2022-11-07。毒丸过于剧毒。
https://wg21.link/p2602r2
[P2604R0] Christian Trott。2022-06-15。MDSPAN:重命名 pointer 和 contiguous。
https://wg21.link/p2604r0
[P2609R3] John Eivind Helset。2023-02-10。稍微放宽 Ranges。
https://wg21.link/p2609r3
[P2613R1] Yihe Le。2022-06-29。为 mdspan 添加缺失的 `empty`。
https://wg21.link/p2613r1
[P2630R4] Christian Trott、Mark Hoemmen、Damien Lebrun-Grandie、Nevin Liber。2023-06-22。Submdspan。
https://wg21.link/p2630r4
[P2637R3] Barry Revzin。2023-06-15。成员访问。
https://wg21.link/p2637r3
[P2641R4] Barry Revzin。2023-06-15。检查 union 备选项是否活动。
https://wg21.link/p2641r4
[P2642R6] Christian Trott、Mark Hoemmen、Damien Lebrun-Grandie、Nicolas Morales、Malte Förster、Jiaming Yuan。2024-01-19。填充的 mdspan 布局。
https://wg21.link/p2642r6
[P2644R1] Nicolai Josuttis、Herb Sutter、Titus Winter、Hana Dusíková、Fabio Fracassi、Victor Zverovich、Bryce Adelstein Lelbach、Peter Sommerlad。2022-11-13。修正损坏的基于范围的 for 循环修订版 1。
https://wg21.link/p2644r1
[P2647R1] Barry Revzin、Jonathan Wakely。2022-11-08。允许在 constexpr 函数中使用 static constexpr 变量。
https://wg21.link/p2647r1
[P2655R3] Hui Xie、S. Levent Yilmaz、Tim Song。2023-02-07。reference_wrapper 的 common_reference_t 应该是引用类型。
https://wg21.link/p2655r3
[P2662R3] Corentin Jabot、Pablo Halpern。2023-12-18。Pack Indexing。
https://wg21.link/p2662r3
[P2663R7] Daniel Towner、Ruslan Arutyunyan。2025-02-17。支持 std::simd 中的交错复杂值提案。
https://wg21.link/p2663r7
[P2674R1] Timur Doumler、Vittorio Romeo。2022-11-12。隐式生命周期类型的特性。
https://wg21.link/p2674r1
[P2697R1] Michael Florian Hava。2023-06-15。bitset 与 string_view 的接口。
https://wg21.link/p2697r1
[P2714R1] 袁志豪、Tomasz Kamiński。2023-06-16。将 front 和 back 绑定到 NTTP 可调用对象。
https://wg21.link/p2714r1
[P2718R0] Joshua Berne、Nicolai Josuttis。2022-11-11。P2644R1 修复基于范围的 for 循环的措辞。
https://wg21.link/p2718r0
[P2734R0] Marc Mutz。2022-11-30。添加新的 2022 SI 前缀。
https://wg21.link/p2734r0
[P2738R1] Corentin Jabot、David Ledger。2023-02-13。从 void* 进行 constexpr 转换:迈向 constexpr 类型擦除。
https://wg21.link/p2738r1
[P2741R3] Corentin Jabot。2023-06-16。用户生成的 static_assert 消息。
https://wg21.link/p2741r3
[P2747R2] Barry Revzin。2024-03-19。constexpr placement new。
https://wg21.link/p2747r2
[P2757R3] Barry Revzin。2023-06-15。类型检查格式参数。
https://wg21.link/p2757r3
[P2786R13] Pablo Halpern、Joshua Berne、Corentin Jabot、Pablo Halpern、Lori Hughes。2025-02-14。C++26 的平凡可重定位性。
https://wg21.link/p2786r13
[P2810R4] René Ferdinand Rivera Morell、Ben Craig。2024-03-21。is_debugger_present is_replaceable。
https://wg21.link/p2810r4
[P2819R2] Michael Florian Hava、Christoph Hofer。2023-12-18。向 complex 添加 tuple 协议。
https://wg21.link/p2819r2
[P2821R5] Jarrad J. Waterloo。2023-12-18。span.at()。
https://wg21.link/p2821r5
[P2833R2] Ben Craig。2023-09-14。独立库:inout expected span。
https://wg21.link/p2833r2
[P2835R7] Gonzalo Brito Gadeschi、Mark Hoemmen、Carter H. Edwards、Bryce Adelstein Lelbach。2024-11-18。公开 std::atomic_ref 的对象地址。
https://wg21.link/p2835r7
[P2836R1] Christopher Di Bella。2023-07-11。std::basic_const_iterator 应遵循其底层类型的可转换性。
https://wg21.link/p2836r1
[P2841R7] Corentin Jabot、Gašper Ažman、James Touton、Hubert Tong。2025-02-15。概念和变量模板模板参数。
https://wg21.link/p2841r7
[P2845R8] Victor Zverovich。2024-03-21。std::filesystem::path 的格式化。
https://wg21.link/p2845r8
[P2846R6] Corentin Jabot。2025-02-15。reserve_hint:为不完全大小的惰性范围预留内存。
https://wg21.link/p2846r6
[P2893R3] Jody Hagins、Arthur O’Dwyer。2024-03-22。变长友元。
https://wg21.link/p2893r3
[P2897R7] Mark Hoemmen、Damien Lebrun-Grandie、Nicolas Manual Morales、Christian Trott。2024-11-22。aligned_accessor:表示指针超对齐的 mdspan 访问器。
https://wg21.link/p2897r7
[P2900R14] Joshua Berne、Timur Doumler、Andrzej Krzemieński。2025-02-14。C++ 的契约。
https://wg21.link/p2900r14
[P2909R4] Victor Zverovich。2023-12-18。修复代码单元作为整数的格式化(Dude,我的 char 呢?)。
https://wg21.link/p2909r4
[P2918R2] Victor Zverovich。2023-12-18。运行时格式字符串 II。
https://wg21.link/p2918r2
[P2933R4] Daniel Towner、Ruslan Arutyunyan。2025-02-17。扩展 头文件函数以支持 std::simd 重载。
https://wg21.link/p2933r4
[P2937R0] Ben Craig。2023-07-02。独立:移除 strtok。
https://wg21.link/p2937r0
[P2944R3] Barry Revzin。2024-03-21。reference_wrapper 的比较。
https://wg21.link/p2944r3
[P2976R1] Ben Craig。2024-05-05。独立库:algorithm、numeric 和 random。
https://wg21.link/p2976r1
[P2985R0] Giuseppe D’Angelo。2023-10-09。用于检测虚基类的类型特性。
https://wg21.link/p2985r0
[P2997R1] Barry Revzin、Tim Song。2024-03-22。从间接可调用概念中移除公共引用要求。
https://wg21.link/p2997r1
[P3019R11] Jonathan Coe、Antony Peacock、Sean Parent。2024-11-23。复合类设计的词汇类型。
https://wg21.link/p3019r11
[P3050R2] Mark Hoemmen。2024-08-13。通过优化非复数值类型的 linalg::conjugated 来修复 C++26。
https://wg21.link/p3050r2
[P3068R6] Hana Dusíková。2024-11-19。允许在常量评估中抛出异常。
https://wg21.link/p3068r6
[P3074R7] Barry Revzin。2025-02-14。平凡 union(原 std::uninitialized)。
https://wg21.link/p3074r7
[P3107R5] Victor Zverovich。2024-03-21。允许高效实现 std::print。
https://wg21.link/p3107r5
[P3137R3] Tim Song。2025-02-10。views::to_input。
https://wg21.link/p3137r3
[P3138R5] Tim Song。2024-11-18。views::cache_latest。
https://wg21.link/p3138r5
[P3168R2] David Sankel、Marco Foco、Darius Neațu、Barry Revzin。2024-06-25。为 std::optional 提供范围支持。
https://wg21.link/p3168r2
[P3222R0] Mark Hoemmen。2024-04-08。通过为 P2642 布局添加转置特殊情况来修复 C++26。
https://wg21.link/p3222r0
[P3235R3] Victor Zverovich。2024-06-26。std::print 更多类型,更快,更少内存。
https://wg21.link/p3235r3
[P3287R3] Matthias Kretz。2025-02-13。std::simd 命名空间探索。
https://wg21.link/p3287r3
[P3309R3] Hana Dusíková。2024-12-16。constexpr atomic 和 atomic_ref。
https://wg21.link/p3309r3
[P3355R1] Mark Hoemmen。2024-10-15。修复 C++26 的 submdspan。
https://wg21.link/p3355r1
[P3369R0] Giuseppe D’Angelo。2024-07-28。uninitialized_default_construct 的 constexpr。
https://wg21.link/p3369r0
[P3372R3] Hana Dusíková。2025-02-11。constexpr 容器和适配器。
https://wg21.link/p3372r3
[P3378R2] Hana Dusíková。2025-02-11。constexpr 异常类型。
https://wg21.link/p3378r2
[P3379R0] Jonathan Wakely。2024-08-27。约束 std::expected 相等运算符。
https://wg21.link/p3379r0
[P3441R2] Daniel Towner、Ruslan Arutyunyan。2025-01-30。将 simd_split 重命名为 simd_chunk。
https://wg21.link/p3441r2
[P3471R4] Konstantin Varlamov、Louis Dionne。2025-02-14。标准库强化。
https://wg21.link/p3471r4
[P3508R0] Giuseppe D’Angelo、Michael Schellenberger Costa。2024-11-20。专用内存算法的 constexpr 措辞。
https://wg21.link/p3508r0
[P3542R0] Brian Bi。2024-12-16。废除“转换构造函数”一词。
https://wg21.link/p3542r0