命名空间
变体
操作

帮助:模板

来自 cppreference.com

此页面描述了此 wiki 中使用的模板。

模板提供了一种实现以下目标的方法

  1. 质量。修改内容变得容易,从而修复错误。重复内容只需要编辑一次。
  2. 一致性。模板使“正确做事的方法”变得隐含。
  3. 可用性。模板使高级格式变得容易。

此 wiki 中有许多模板。所有模板的列表可在 Special:AllPages 获取。由于此 wiki 使用 Mediawiki CMS,因此 Wikipedia 项目中存在的所有模板都可以在这里使用。作为额外的优势,模板文档 可用于学习 Mediawiki 模板语法。

内容

[edit] 列表

列表模板系列

  • dsc **** : 用于创建成员变量/函数列表。
  • dcl **** : 用于创建详细的声明列表(包含实际声明代码的列表)。
  • sdsc **** : 用于创建表示语言功能各种语法的列表。用于 cpp/language 的子页面。
  • par **** : 用于创建解释函数参数的列表。
  • spar **** : 用于创建解释语法参数的列表。
  • nv **** : 用于在导航栏中创建功能列表。
  • elink **** : 用于创建“外部链接”列表。

[edit] 排版辅助模板

[edit] [{{purge}}] 文档

这是用于输出特殊符号的模板之一

{{!}} - 输出|

{{!!}} - 输出||

{{=}} - 输出=

{{==}} - 输出==

{{!=}} - 输出|=

{{(!}} - 输出{|

{{!)}} - 输出|}

[edit] 格式

[edit] [{{purge}}] 文档

为封闭文本添加格式

用法 描述 生成的 HTML/MediaWiki 元素  预览 
{{tt|text}} text 以等宽字体显示 <code> text
{{ttb|text}} text 以粗体等宽字体显示 <code><b> text
{{tti|text}} text 以斜体等宽字体显示 <code><i> text
{{normal|text}} text 以普通字体粗细显示 ... font-weight: normal; ... text
{{ttn|text}} text 以普通粗细的等宽字体显示 {{normal|<code>text</code>}} text
{{ttni|text}} text 以斜体等宽字体,普通粗细显示 {{normal|<code><i>text</i></code>}} text
{{petty|text}} 较小的text <small> text
{{small|text}} 较小的text ... font-size: 0.7em;
    line-height: 130%; ...
text
{{smalltt|text}} 较小的text 以等宽字体显示 {{small|<code>text</code>}} text
{{sub|text}} 下标的text 以普通字体显示 <sub> text
{{sup|text}} 上标的text 以普通字体显示 <sup> text
{{p|text}} text 在新段落中 <p>text</p>

text

[edit] 语法高亮

[edit] [{{purge}}] 文档

这些是用于语法高亮的模板。


{{c|code |lang=language (optional)}}

一个基本模板,旨在突出显示代码行内。lang 是可选的;默认情况下使用 {{get lang}} 返回的值。应用半透明的深色背景。
示例:{{c|std::string(80, '_');}} 生成 std::string(80, '_');
示例:{{c|1= auto x = std::array{1, 2, 3};}} 生成 auto x = std::array{1, 2, 3};
注意,如果表达式中存在等号 =,则需要 1=
  • 对于范围内的代码片段(例如 [beginend)),建议使用 {{range}} 模板系列。


{{c multi|line1 |line2 (optional)|... |line8 (optional)|lang=language (optional)}}

与 {{c}} 相似,支持多行代码片段(最多 8 行)。lang 是可选的;默认情况下使用 {{get lang}} 返回的值。代码高亮不跨行:避免拆分字符串字面量 ("") 和多行注释 (/* */).
示例(注意填充空格):{{c multi|std::max(std::numeric_limits<int>::max(),|         std::numeric_limits<int>::min())}}
或者(注意方便的缩进)
{{c multi
|std::max(std::numeric_limits<int>::max(),
|         std::numeric_limits<int>::min())}}
结果是
std::max(std::numeric_limits<int>::max(),
         std::numeric_limits<int>::min())
.
注意,如果在相应行中存在等号=,则需要前导|1=/|2=/|3=/.../|8=,例如{{c multi
|1=std::any = 42;
|2=std::any = 3.14;}}
结果是
std::any = 42;
std::any = 3.14;
.


{{cc multi|line1 |line2 (optional)|... |line8 (optional)|lang=language (optional)}}

与{{c multi}}相同,只是不应用背景(例如边界框)。
示例(注意填充空格)
{{cc multi|std::max(std::numeric_limits<int>::max(),|         std::numeric_limits<int>::min())}}
或者
{{cc multi|std::max(std::numeric_limits<int>::max(),|{{nbsp|9}}std::numeric_limits<int>::min())}}
或者(注意方便的缩进)
{{cc multi
|std::max(std::numeric_limits<int>::max(),
|         std::numeric_limits<int>::min())}}
结果是
std::max(std::numeric_limits<int>::max(),
         std::numeric_limits<int>::min()).


{{c/core|code |lang=language (optional)}}

与{{c}}相同,只是不应用背景(例如边界框)。 仅用于其他模板。
示例:{{c/core|std::puts("C++");}} 结果是std::puts("C++");


{{co|code |lang=language (optional)}}

与{{c/core}}相同,只是不应用背景(例如边界框)。 适用于表中,其中边界框由表的框架设置。
示例:{{co|std::basic_regex<char>}} 结果是std::basic_regex<char>


{{box|tags }}

类似于{{c}},对由多个给定标签生成的格式化文本应用一个共享的边界框。
示例:{{box|{{lc|std::pair}}{{tt|''<int, char>''()}}}} 结果是std::pair<int, char>()
示例:{{ltt std|cpp/algorithm/swap}}{{tt|''<int>''}}{{c/core|(x, y);}}}} 结果是std::swap<int>(x, y);


{{box/core|tags }}

与{{box}}相同,只是不应用背景(例如边界框)。
示例
{{box/core|{{c/core|std::common_reference_t<ranges::range_reference_t<R1>,}}<br>{{nbspt|24}}{{c/core|ranges::range_reference_t<R2>>}}}}
结果是
std::common_reference_t<ranges::range_reference_t<R1>,
                        ranges::range_reference_t<R2>>


{{cc|code |lang=language (optional)}}

一个基本模板,旨在突出显示较大的代码量。 通常在{{c}} 模板无法显示可读代码,但{{source}} 会浪费太多空间时使用。 lang 是可选的;默认情况下使用由{{get lang}} 返回的值。
示例:{{cc|1= assert(std::hypot(3, 4) == 5);}} 结果是assert(std::hypot(3, 4) == 5);


{{source|code |lang=language (optional)}}

一个基本模板,旨在突出显示大量代码。 lang 是可选的;默认情况下使用由{{get lang}} 返回的值。
例如,代码
 
  {{source|1=
  int main()
  {
      __builtin_printf("Hello, C++\n");
  }
  }}
  
结果是
int main()
{
    __builtin_printf("Hello, C++\n");
}


{{eq fun|code1 |code2 (optional)|... |code4 (optional)|lang=language (optional)}}

一个基本模板,用于在可能的实现 部分表示代码片段。 参数 code1code2 等是正在描述的每个函数模板版本的代码(例如,下面的情况下的std::fill 族)。 如果根本没有提供代码,则模板将产生{{todo}}。 lang 是可选的 - 默认情况下使用由{{get lang}} 返回的值。
例如,代码
 
  {{eq fun
  | 1=
  template<class ForwardIt, class T>
  void fill(ForwardIt first, ForwardIt last, const T& value)
  {
      for (; first != last; ++first)
          *first = value;
  }
  | 2=
  template<class OutputIt, class Size, class T>
  OutputIt fill_n(OutputIt first, Size count, const T& value)
  {
      for (Size i = 0; i < count; i++)
          *first++ = value;
      return first;
  }
  }}

结果是
第一个版本
template<class ForwardIt, class T>
void fill(ForwardIt first, ForwardIt last, const T& value)
{
    for (; first != last; ++first)
        *first = value;
}
第二个版本
template<class OutputIt, class Size, class T>
OutputIt fill_n(OutputIt first, Size count, const T& value)
{
    for (Size i = 0; i < count; i++)
        *first++ = value;
    return first;
}


{{eq impl|code1 |code2 (optional)|... |code4 (optional)|title1 (optional)|... |title4 (optional)|lang=language (optional)}}

其他参数

{{eq impl|ver1=link1 |... |ver4=link4 (optional)}}

与{{eq fun}} 相同,具有两种附加功能
  • 通过可选参数(s)title1=Your title,...,title4=Your title 替换任何默认标题。 默认标题与上述模板{{eq fun}} 相同,即 第一个版本,...,第四个版本
  • 在标题文本“下方”自动生成内部链接。 如果指定了verN,则此模板将生成一个内部 HTML 链接,其目标名称为“版本 num”。 例如,如果ver2=3,则将生成内部链接“#Version 3”。 此功能与{{dcla}} 和 {{dcl rev multi}} 生成的内部锚点一起使用,将可能的实现 代码部分链接到概要 中的声明。


{{example|description (optional)|lang=language (optional)|std=language standard (optional)|code=code to display |p=true if nondeterministic (optional)|output=sample output (optional)}}

一个基本模板,用于表示示例。 如果 code 不存在,则模板将产生{{todo}}。 lang 默认值为由{{get lang}} 返回的值。 output 指定由代码显示的输出。 如果输出不是确定性的,则 p 应设置为 true 以指示这一点(然后显示“可能的输出:”而不是仅显示“输出:”)。
以下语言标准可用
cxx98、cxx03、cxx11、cxx14、c89、c99、c11。
例如,代码
 
  {{example
  | Commenting string
  | code=
  int main()
  {
      __builtin_puts("Hello, C++");
  }
  | p=true
  | output=
  Hello, C++
  }}
  
结果是

注释字符串

int main()
{
    __builtin_puts("Hello, C++");
}

可能的输出

Hello, C++

[编辑] 链接

[编辑] [{{purge}}] 文档

这是用于制作链接的模板之一。

[编辑] 绝对链接

[编辑] 普通字体

{{lt|path |title (optional)}} - 使用绝对路径创建指向页面的链接。 默认标题仅为路径的最后一部分。

示例:{{lt|cpp/language/statements}} 将产生链接:statements
示例:{{lt|cpp/language/statements|Labeled statements}} 将产生链接:Labeled statements
注意:前面的示例只是使用标准模板创建相同链接的另一种方法
[[cpp/language/statements|Labeled statements]],这也将产生Labeled statements

{{ls|path#section }} - 通过绝对path 创建指向页面上的section(锚点)的链接。 section 文本也用作标题。 要创建指向同一页面的链接,path 部分应为空。

示例:{{ls|cpp/language/lambda#Syntax}} 将产生链接:Syntax
要创建指向当前页面中某个部分/锚点的链接,应省略path 部分。
示例:{{ls|#Relative links}} 将产生链接:Relative links(即指向此页面中某个部分的链接)。

{{lsd|path#Section }}(“lsd” 代表“指向去首字母大写的部分的链接”) - 几乎与{{ls}} 相同,只是它会将显示的部分名称的首字母去首字母大写。 要创建指向同一页面的链接,path 部分应为空。

示例:{{lsd|cpp/language/array#Arrays of unknown bound}} 将产生链接:arrays of unknown bound
示例:{{lsd|#Relative links}} 将产生链接:relative links(即指向此页面中某个部分的链接)。

[编辑] 电传字体

{{ltt|path |title (可选)}} - 使用绝对路径创建指向页面的链接。 默认标题仅为路径的最后一部分。

例如:{{ltt|cpp/language/switch}} 导致链接:switch
例如:{{ltt|cpp/language/switch|switch(expr)}} 导致链接:switch(expr)

{{ltf|path |title (可选)|args=arguments (可选)}} - 使用绝对路径创建指向页面的链接。 默认标题仅为路径的最后一部分。 附加了表示function 的圆括号,其中包含可选的arguments

例如:{{ltf|cpp/error/terminate}} 导致链接:terminate()
例如:{{ltf|cpp/error/terminate|std::terminate}} 导致链接:std::terminate()
例如:{{ltf|cpp/error/set_terminate|std::set_terminate|args=nullptr}} 导致链接:std::set_terminate(nullptr)

{{ltp|path |title (可选)|targs=template arguments (可选)}} - 使用绝对路径创建指向页面的链接。 默认标题仅为路径的最后一部分。 附加了表示template 的尖括号,其中包含可选的template arguments

例如:{{ltp|cpp/container/vector}} 导致链接:vector<>
例如:{{ltp|cpp/container/vector|targs=int}} 导致链接:vector<int>
例如:{{ltp|cpp/container/vector|targs=std::size_t}} 导致链接:vector<std::size_t>

{{ltpf|path |title (可选)|targs=template arguments (可选)|args=arguments (可选)}} - 使用绝对路径创建指向页面的链接。 默认标题仅为路径的最后一部分。 附加了表示template 的尖括号,其中包含可选的template arguments。 之后,附加了表示function 的圆括号,其中包含可选的arguments

例如:{{ltpf|cpp/container/vector/vector|targs=int|args=5}} 导致链接:vector<int>(5)
例如:{{ltpf|cpp/locale/use_facet|targs=Facet|args=loc}} 导致链接:use_facet<Facet>(loc)

{{lst|path#section }} - 使用绝对path创建指向页面上section (锚点)的链接。 section 文本也用作标题。 要在同一页面上创建链接,path 部分应为空。

例如:{{lst|cpp/ranges#maybe-const}} 导致链接:maybe-const
例如:{{lst|#top}} 导致链接:top
例如:{{lst|#top_}} 导致链接:top_ (注意链接中尾部的下划线字符会自动被裁剪)

{{l2tt|page |title1 (可选)|title2 (可选)}} - 使用绝对路径创建指向页面的链接。 标题由路径的最后两部分组成,并在它们之间插入::。 这些部分中的每一个都可以由title1title2 覆盖。

例如:{{l2tt|cpp/container/vector/size}} 导致链接:vector::size
例如:{{l2tt|cpp/container/vector/size|size() const}} 导致链接:vector::size() const
例如:{{l2tt|cpp/container/vector/size|size()|std::vector<T>}} 导致链接:std::vector<T>::size()

{{l2tf|page |title1 (可选)|title2 (可选)|args=arguments (可选)|suffix=suffix (可选)}} - 使用绝对路径创建指向页面的链接。 标题由路径的最后两部分组成,并在它们之间插入::。 这些部分中的每一个都可以由title1title2 覆盖。 附加了表示function 的圆括号,其中包含可选的arguments,并且后面跟着可选的suffix

例如:{{l2tf|cpp/container/vector/size}} 导致链接:vector::size()
例如:{{l2tf|cpp/container/vector/size|suffix=const}} 导致链接:vector::size() const
例如:{{l2tf|cpp/container/vector/size|size|std::vector<T>}} 导致链接:std::vector<T>::size()

[edit] 斜体电传字体

{{lti|path |title (可选)}} - 使用绝对路径创建指向页面的链接。 默认标题仅为路径的最后一部分。

例如:{{lti|cpp/concepts/boolean-testable}} 导致链接:boolean-testable

{{ltpi|path |title (可选)|targs=template arguments (可选)}} - 使用绝对路径创建指向页面的链接。 默认标题仅为路径的最后一部分。 附加了表示template 的尖括号,其中包含可选的template arguments

例如:{{ltpi|cpp/concepts/boolean-testable}} 导致链接:boolean-testable <>
例如:{{ltpi|cpp/concepts/boolean-testable|targs=int}} 导致链接:boolean-testable <int>

{{lsi|path#section }} - 使用绝对path创建指向页面上section (锚点)的链接。 section 文本也用作标题。 要在同一页面上创建链接,path 部分应为空。

例如:{{lsi|cpp/ranges#maybe-const}} 导致链接:maybe-const
例如:{{lsi|#top}} 导致链接:top
例如:{{lsi|#top_}} 导致链接:top_ (注意链接中尾部的下划线字符会自动被裁剪)

[edit] 带有前缀std::的绝对链接

以下便利模板生成的链接标题以std:: 开头。 它们可以在{{lc}} 无法生成链接的地方使用。 所有链接都以电传字体显示。

{{ltt std|path }} - 使用绝对路径链接到页面。 标题为 std:: 后跟路径的最后一部分。

例如:{{ltt std|cpp/container/mdspan}} 导致链接:std::mdspan

{{ltf std|path }} - 使用绝对路径链接到页面。 标题为 std:: 后跟路径的最后一部分以及表示function 的圆括号。

例如:{{ltf std|cpp/io/print}} 导致链接:std::print()

{{l2tt std|path }} - 使用绝对路径链接到页面。 标题为 std:: 后跟路径的最后两部分,用 :: 连接。

例如:{{l2tt std|cpp/utility/basic_stacktrace/current}} 导致链接:std::basic_stacktrace::current

{{l2tf std|path }} - 使用绝对路径链接到页面。 标题为 std:: 后跟路径的最后两部分,用 :: 连接,以及表示function 的圆括号。

例如:{{l2tf std|cpp/utility/expected/value}} 导致链接:std::expected::value()

[edit] 相对链接

[edit] 正常字体

{{rl|page |title (可选)}} - 创建指向相对于当前页面(即子页面)的页面的链接。

{{rlp|page |title (可选)}} - 创建指向相对于父页面的页面的链接。

{{rlp|/ |title }} - 创建指向父页面的链接。

{{rlps|page#section }} - 创建指向相对于父页面的页面的section (锚点)的链接。 生成的链接的标题是节名称。

{{rlpsd|page#Section }} - 创建指向相对于父页面的页面的section (锚点)的链接。 生成的链接的标题是节名称,第一个字母小写。

[edit] 电传字体

{{rlt|page |title (可选)}} - 创建指向相对于当前页面(即子页面)的页面的链接。

{{rlpt|page |title (可选)}} - 创建指向相对于父页面的页面的链接。

{{rlpt|/ |title }} - 创建指向父页面的链接。

{{rlpf|page |title (可选)|args=arguments (可选)}} - 创建指向相对于父页面的页面的链接。 附加了表示function 的圆括号,其中包含可选的arguments

{{rlpst|page#section }} - 创建指向相对于父页面的页面的section (锚点)的链接。 生成的链接的标题是节名称。

{{ttt|identifier }} - 创建指向当前页面(通过#top 链接)的链接。

例如:{{ttt|this_page}} 导致 this_page

[edit] 斜体电传字体

{{rli|page |title (可选)}} - 创建指向相对于当前页面(即子页面)的页面的链接。

{{rlpi|page |title (可选)}} - 创建指向相对于父页面的页面的链接。

{{rlpi|/ |title }} - 创建指向父页面的链接。

{{rlpsi|page#section }} - 创建指向相对于父页面的页面的section (锚点)的链接。 生成的链接的标题是节名称。

[edit] 装饰链接

{{attr|attribute |title (可选)|additional title (可选)|lang=language (可选)}}

用于创建指向C/C++语言属性说明的链接。参数
  • attribute - 属性说明符名称。
  • title - 属性说明符标题。
  • additional title - 标题后的其他元素。
  • language - cppc。如果没有给出 language,则使用 {{get lang}}。
示例:{{attr|assume}} 导致 [[assume]]
示例:{{attr|noreturn|_Noreturn|lang=c}} 导致 [[_Noreturn]]
示例:{{attr|deprecated|3=("because")}} 导致 [[deprecated("because")]]

[编辑] 标准化链接和信息

[编辑] [{{purge}}] 文档

[编辑] WG21

生成指向C++工作组(WG21)文档的链接,分别是CWG/LWG页面或“提案”文件。

{{wg21|CWG 或 LWG 或 WG21 文档编号 |full (可选)}}

参数full (可选)仅适用于“提案”文档,应用它会导致生成一个指向GitHub页面的附加链接(WG21在该页面上处理提案)。

[编辑] stddoc

用于生成指向WG14/WG21文档的链接。

WG/语言(C或C++)由{{get lang}}确定,除非提供了带有值 ccpplang (可选)参数(如果支持)。

{{stddoc|文档编号 |链接标题 (可选)|lang=lang (可选)}}

生成指向具有给定文档编号的WG14/WG21文档的链接。可以提供自定义的 link title,默认情况下它是文档编号的大写形式。在C模式下, document number 可以包含文件扩展名,例如 n2081.htm。在C++模式下,由于wg21.link服务自动化,无需知道/传递扩展名。
  • 示例:{{stddoc|p2443r1}} 导致:P2443R1
  • 示例:{{stddoc|P2443R1|views::chunk_by}} 导致:views::chunk_by
  • 示例:{{stddoc|n2731|C23 draft|lang=c}} 导致:C23 draft
  • 示例:{{stddoc|n2081.htm|n2081|lang=c}} 导致:n2081

{{stddoc latest draft|链接标题 (可选)|lang=lang (可选)}}

生成指向下一个C/C++标准的最新草案的链接。
  • 目前,{{stddoc latest draft}} 导致:N4993
  • 目前,{{stddoc latest draft|Latest C++ draft}} 导致:Latest C++ draft
  • 目前,{{stddoc latest draft|Latest C draft|lang=c}} 导致:Latest C draft

[编辑] stdinfo

用于提供C/C++标准化的信息。

语言(C或C++)由{{get lang}}确定,除非提供了带有值 ccpplang (可选)参数(如果支持)。

{{stdinfo latest draft|rev 或 doc 或 date |lang=lang (可选)}}

是C/C++标准草案信息的中心。根据第一个参数的,返回的信息
信息 示例
rev 版本号 {{stdinfo latest draft|rev}} 导致 26

{{stdinfo latest draft|rev|lang=c}} 导致 2y

doc 文档编号 {{stdinfo latest draft|doc}} 导致 n4993

{{stdinfo latest draft|doc|lang=c}} 导致 n3301

date 文档日期 {{stdinfo latest draft|date}} 导致 2024-10-16

{{stdinfo latest draft|date|lang=c}} 导致 2024-07-28

在以下更高级别模板中使用
{{stdinfo latest draft docnum}}, {{stdinfo latest draft docdate}}, {{stdinfo next version number}}, {{stdinfo next version}}。

{{stdinfo latest draft docnum|lang=lang (可选)}}

C/C++标准最新草案的文档编号。
  • 对于C,结果是n3301。
  • 对于C++,结果是n4993。

{{stdinfo latest draft docdate|lang=lang (可选)}}

C/C++标准最新草案的文档日期。
  • 对于C,结果是2024-07-28。
  • 对于C++,结果是2024-10-16。

{{stdinfo next version number|lang=lang (可选)}}

下一个C/C++标准的版本号。
  • 对于C,结果是2y。
  • 对于C++,结果是26。

{{stdinfo next version}}

下一个C/C++标准的版本(带有前缀C或C++)。结果是:C++

{{stdinfo current version number}}

当前C/C++标准的版本号。结果是:20

{{stdinfo current version}}

当前C/C++标准的版本(带有前缀C或C++)。结果是:C++20

[编辑] 当前语言

返回页面默认使用的编程语言。输出值取决于包含此模板的页面的标题。

{{get lang}}

如果页面标题以“c/”开头,则输出值为“c”,如果页面标题以“cpp/”开头,则输出值为“cpp”。否则,输出值为“cpp”。

{{get lang formal}}

如果页面标题以“c/”开头,则输出值为“C”,如果页面标题以“cpp/”开头,则输出值为“C++”。否则,输出值为“C++”。

[编辑] 注释

[编辑] {{mark}} 模板系列

[编辑] [{{purge}}] 文档

创建一个注释。

一般

{{mark|text |class=classes (可选)}} - 创建一个包含给定 text 的注释,可以提供额外的 classes 用于样式设置。

示例:{{mark|text}} 导致 (text).

{{mark rev|text |class=classes (可选)}} - 创建一个包含给定 text 的注释,可以提供额外的 classes 用于样式设置。

示例:{{mark rev|since C++1998}} 导致 (since C++1998).

{{mark tooltip|text |tooltip |class=classes (可选)}} - 创建一个包含给定 texttooltip 的注释,可以提供额外的 classes 用于样式设置。

示例:{{mark tooltip|99% complete|XXX not supported}} 导致 (99% complete*).
杂项
模板 注释
{{mark attribute}} (属性说明符)
{{标记为已弃用}} (已弃用)
{{标记为可选}} (可选)
{{标记为条件存在}} (条件存在)
{{标记为隐式}} (隐式声明)
{{标记为概念}} (概念)
{{标记为示例}} 仅用于说明目的*
{{标记为示例概念}} 仅用于说明目的的概念*
{{标记为标签}} (标签)
{{标记为示例成员类型}} 仅用于说明目的的成员类型*
{{标记为命名需求}} (命名需求)
{{标记为类型定义}} (类型定义)
{{标记为类型别名}} (类型别名)
{{标记为枚举}} (枚举)
{{标记为公共成员枚举}} (公共成员枚举)
{{标记为关键字}} (关键字)
{{标记为宏关键字}} (关键字宏)
{{标记为预处理指令}} (预处理指令)
{{标记为运算符宏}} (运算符宏)
{{标记为语言}} (语言)
C++ 标准
模板 注释
{{标记为 C++98 中已弃用}} (在 C++98 中已弃用)
{{标记为 C++03}} (C++03)
{{标记为自 C++03}} (自 C++03)
{{标记为直到 C++03}} (直到 C++03)
{{标记为 C++11}} (C++11)
{{标记为自 C++11}} (自 C++11)
{{标记为自 C++11 的 constexpr}} (自 C++11 的 constexpr)
{{标记为自 C++11 的 noexcept}} (自 C++11 的 noexcept)
{{标记为 C++11 中已弃用}} (在 C++11 中已弃用)
{{标记为直到 C++11}} (直到 C++11)
{{标记为 C++14}} (C++14)
{{标记为自 C++14}} (自 C++14)
{{标记为自 C++14 的 constexpr}} (自 C++14 的 constexpr)
{{标记为自 C++14 的 noexcept}} (自 C++14 的 noexcept)
{{标记为 C++14 中已弃用}} (在 C++14 中已弃用)
{{标记为直到 C++14}} (直到 C++14)
{{标记为 C++17}} (C++17)
{{标记为自 C++17}} (自 C++17)
{{标记为自 C++17 的 constexpr}} (自 C++17 的 constexpr)
{{标记为自 C++17 的 noexcept}} (自 C++17 的 noexcept)
{{标记为 C++17 中已弃用}} (在 C++17 中已弃用)
{{标记为直到 C++17}} (直到 C++17)
{{标记为 C++20}} (C++20)
{{标记为自 C++20}} (自 C++20)
{{标记为自 C++20 的 constexpr}} (自 C++20 的 constexpr)
{{标记为自 C++20 的 noexcept}} (自 C++20 的 noexcept)
{{标记为 C++20 中已弃用}} (在 C++20 中已弃用)
{{标记为直到 C++20}} (直到 C++20)
{{标记为 C++23}} (C++23)
{{标记为自 C++23}} (自 C++23)
{{标记为自 C++23 的 constexpr}} (自 C++23 的 constexpr)
{{标记为自 C++23 的 noexcept}} (自 C++23 的 noexcept)
{{标记为 C++23 中已弃用}} (在 C++23 中已弃用)
{{标记为 C++23 中更新}} (在 C++23 中更新)
{{标记为直到 C++23}} (直到 C++23)
{{标记为 C++26}} (C++26)
{{标记为自 C++26}} (自 C++26)
{{标记为自 C++26 的 constexpr}} (自 C++26 的 constexpr)
{{标记为自 C++26 的 noexcept}} (自 C++26 的 noexcept)
{{标记为 C++26 中已弃用}} (在 C++26 中已弃用)
{{标记为 C++26 中更新}} (在 C++26 中更新)
{{标记为直到 C++26}} (直到 C++26)
C 标准
模板 注释
{{标记为 C95}} (C95)
{{标记为自 C95}} (自 C95)
{{标记为直到 C95}} (直到 C95)
{{标记为 C99}} (C99)
{{标记为自 C99}} (自 C99)
{{标记为直到 C99}} (直到 C99)
{{标记为 C11}} (C11)
{{标记为自 C11}} (自 C11)
{{标记为直到 C11}} (直到 C11)
{{标记为 C17}} (C17)
{{标记为自 C17}} (自 C17)
{{标记为 C17 中已弃用}} (在 C17 中已弃用)
{{标记为直到 C17}} (直到 C17)
{{标记为 C23}} (C23)
{{标记为自 C23}} (自 C23)
{{标记为直到 C23}} (直到 C23)
{{标记为自 {std}}} (自 {std})
{{标记为直到 {std}}} (直到 {std})
组合

{{标记生命周期|appear=c++xx (可选)|since=c++xx (可选)|deprecated=c++xx (可选)|until=c++xx (可选)|removed=c++xx (可选)|br=yes (可选)}}

示例:{{mark life|since=c++11|deprecated=c++17|removed=c++20}} 导致
(自 C++11)(在 C++17 中已弃用)(在 C++20 中移除)
示例:{{mark life|appear=c++11|until=c++20}} 导致 (C++11)(直到 C++20)
  • 可选参数 br 可以设置为 yes 以将每个注释显示在单独的行中,例如
示例:{{mark life|since=c++11|deprecated=c++17|removed=c++20|br=yes}} 导致
(自 C++11)
(在 C++17 中已弃用)
(在 C++20 中移除)


技术规范
模板 注释
{{标记为自库基础技术规范}} (库基础技术规范)
{{标记为自库基础技术规范 v2}} (库基础技术规范 v2)
{{标记为自库基础技术规范 v3}} (库基础技术规范 v3)
{{标记为自文件系统技术规范}} (文件系统技术规范)
{{标记为自并行技术规范}} (并行技术规范)
{{标记为自并行技术规范 v2}} (并行技术规范 v2)
{{标记为自概念技术规范}} (概念技术规范)
{{标记为自并发技术规范}} (并发技术规范)
{{标记为自并发技术规范 v2}} (并发技术规范 v2)
{{标记为自 TM 技术规范}} (TM 技术规范)
{{标记为自特殊函数技术报告}} (特殊函数技术报告)
{{标记为自模块技术规范}} (模块技术规范)
{{标记为自协程技术规范}} (协程技术规范)
{{标记为自反射技术规范}} (反射技术规范)
函数
模板 注释
{{标记为函数}} (函数)
{{标记为函数模板}} (函数模板)
{{标记为公共成员函数}} (公共成员函数)
{{标记为公共静态成员函数}} (公共静态成员函数)
{{标记为虚公共成员函数}} (虚公共成员函数)
{{标记为私有成员函数}} (私有成员函数)
{{标记为受保护成员函数}} (受保护成员函数)
{{标记为虚受保护成员函数}} (虚受保护成员函数)
{{标记为示例成员函数}} 仅用于说明目的的成员函数*
{{mark expos mem sfun}} (仅作说明目的的静态成员函数*)
{{mark macro fun}} (函数宏)
模板 注释
{{mark class}} (类)
{{mark tclass}} (类模板)
{{mark talias}} (别名模板)
{{mark ptclass}} (类模板特化)
{{mark mem class}} (公共成员类)
{{mark priv mem class}} (私有成员类)
{{mark prot mem class}} (保护成员类)
{{mark mem tclass}} (公共成员类模板)
{{mark priv mem tclass}} (私有成员类模板)
{{mark expos mem class}} (仅作说明目的的成员类*)
{{mark expos mem tclass}} (仅作说明目的的成员类模板*)
{{mark priv ntclass}} (私有嵌套类模板)
常量
模板 注释
{{mark macro const}} (宏常量)
{{mark const}} (常量)
{{mark mem const}} (公共成员常量)
{{mark mem sconst}} (公共静态成员常量)
{{mark expos mem sconst}} (仅作说明目的的静态成员常量*)
对象
模板 注释
{{mark mem obj}} (公共成员对象)
{{mark priv mem obj}} (私有成员对象)
{{mark prot mem obj}} (保护成员对象)
{{mark expos mem obj}} (仅作说明目的的成员对象*)
{{mark expos mem var}} (仅作说明目的的变体成员对象*)
{{mark custpt}} (定制点对象)
{{mark rao}} (范围适配器对象)
{{mark niebloid}} (niebloid)


容器标记支持

{{cpp/container/mark std|container}} - 输出 (C++11), (C++20), (C++23) 等,根据给定标准的修订版 container。对于 C++11 之前的容器,输出为空。

[编辑] 示例
  • {{cpp/container/mark std|vector}} 结果为 (无)
  • {{cpp/container/mark std|array}} 结果为 (C++11)
  • {{cpp/container/mark std|unordered_set}} 结果为 (C++11)
  • {{cpp/container/mark std|span}} 结果为 (C++20)
  • {{cpp/container/mark std|flat_set}} 结果为 (C++23)

[编辑] {{cmark}} 模板系列

[编辑] [{{清除}}] 文档

为函数创建注释。一些注释已定义

{{cmark virtual}} 结果为 [virtual]

{{cmark static}} 结果为 [static]

{{cmark deleted}} 结果为 [deleted]

[编辑] 版本控制

[编辑] [{{清除}}] 文档

用于声明描述的某些部分仅对标准的特定修订版有效。

{{rev begin|noborder=true_if_noborder (可选)}}

开始针对标准特定修订版的一组文本片段。如果 noborder 参数为 true,则表将以无边框显示,并且尽可能减少填充。

{{rev|since=since-std (可选)|until=until-std (可选)|text }}

指定 text 仅对从 since-stduntil-std(不包含 until-std)的标准修订版有效。

{{rev end}}

结束针对标准特定修订版的一组文本片段。

{{rrev|noborder=true_if_noborder (可选)|since=since-std (可选)|until=until-std (可选)|text }}

组合了 {{rev begin}}/{{rev}}/{{rev end}},用于仅需要单个 {{rev}} 的情况。

{{rrev multi|noborder=true_if_noborder (可选)|sinceX=since-std (可选)|untilX=until-std (可选)|revX=text |... }}

组合了 {{rev begin}}/{{rev}}/{{rev end}}。支持最多 7 个片段。sinceX 的默认值为 untilX-1untilX 的默认值为 sinceX+1。因此,它在片段相对较短且修订版范围连续的情况下最有用。此模板可以被替换。

{{rev inl|id=id (可选)|since=since-std (可选)|until=until-std (可选)|noborder=true_if_noborder (可选)|text }}

与 {{rev}} 相同,只是显示为内联。{{rev begin}} 和 {{rev end}} 必须不使用。文本可以使用 id 引用。

如果 noborder 参数为 true,则将省略边框。

[编辑] 特性测试宏渲染

[编辑] [{{清除}}] 文档

[编辑] 特性测试宏支持

用于生成链接和表格,以描述给定的特性测试宏。

[编辑] 单行形式

{{feature test macro|feature-test-macro-name |feature |value=date |std=C++XY |dr=yes or NN (可选)}}

示例

{{feature test macro|__cpp_lib_string_view|{{lc|std::string_view}}|value=201606L|std=C++17}}
结果是
特性测试 标准 特性
__cpp_lib_string_view 201606L (C++17) std::string_view

示例

{{feature test macro|__cpp_inheriting_constructors|Rewording|value=201511L|std=C++11|dr=98}}
结果是
特性测试宏 标准 特性
__cpp_inheriting_constructors 201511L (C++11)
(DR98)
措辞重述

[编辑] 多行形式

如果页面上存在多个特性测试宏,则应使用以下模板将它们组合到一个表格中

{{ftm begin|params (可选)}}

{{ftm|params }}

...

{{ftm end}}

[编辑] 语法

{{ftm begin|core=yes (可选)|sort=yes (可选)}}

确定表格的属性。

  • 如果提供了名为参数 core,则不会生成指向 库特性页面 的链接(在表格标题中)。
  • 如果提供了名为参数 sort,则该表格将是 "可排序" 的 wiki 表格。

注意:之前支持两个额外的(可选)参数:stdcomment(现在都被忽略了),它们用于有条件地添加/隐藏列。StdValueFeature始终存在


{{ftm|cpp-macro |feature |value=value |std=C++XX |rowspan=R (可选)|dr=yes 或 XZ (可选)}}

  • cpp-macro 提供特性测试宏名称,例如 __cpp_lib_constexpr
  • feature 提供特性描述
  • value 提供特性测试值(日期),例如 202202L
  • std 提供修订字符串,例如 (C++23)
  • rowspan 是一个可选参数(例如,rowspan="3"),它与标准 wiki 表格中的含义相同,即,如果提供,它会导致将R 个相邻单元格(在特性测试宏列中)垂直合并成一个单元格,并在其中渲染一个特性测试宏名称。以下 R - 1 {{ftm}} 应该使用 - 字符而不是宏名称。
  • dr,如果使用参数“yes”提供,则会在 C++ 修订版下方添加一个 (DR) 标记。
  • dr,如果使用除“yes”以外的参数提供,例如修订版号 98,则会在 C++ 修订版下方添加一个 (DR98) 标记。

[编辑] 示例

序列

{{ftm begin|sort=yes}}
{{ftm|std=C++23|value=202207L|__cpp_lib_find_last|comment #1}}
{{ftm|std=C++23|value=202207L|__cpp_lib_fold|comment #2}}
{{ftm|std=C++20|value=201911L|__cpp_lib_ranges|rowspan="4"|comment #3}}
{{ftm|std=C++20|value=202106L|-|comment #4}}
{{ftm|std=C++20|value=202110L|-|comment #5|dr=yes}}
{{ftm|std=C++23|value=202202L|-|comment #6|dr=20}}
{{ftm|std=C++23|value=202207L|__cpp_lib_ranges_contains|comment #7}}
{{ftm|std=C++23|value=202202L|__cpp_lib_ranges_iota|comment #8}}
{{ftm|std=C++23|value=202106L|__cpp_lib_ranges_starts_ends_with|comment #9}}
{{ftm|std=C++20|value=201806L|__cpp_lib_shift|rowspan="2"|comment #10}}
{{ftm|std=C++23|value=202202L|-|comment #11}}
{{ftm end}}

结果是

特性测试 标准 特性
__cpp_lib_find_last 202207L (C++23) comment #1
__cpp_lib_fold 202207L (C++23) comment #2
__cpp_lib_ranges 201911L (C++20) comment #3
202106L (C++20) comment #4
202110L (C++20)
(DR)
comment #5
202202L (C++23)
(DR20)
comment #6
__cpp_lib_ranges_contains 202207L (C++23) comment #7
__cpp_lib_ranges_iota 202202L (C++23) comment #8
__cpp_lib_ranges_starts_ends_with 202106L (C++23) comment #9
__cpp_lib_shift 201806L (C++20) comment #10
202202L (C++23) comment #11

[编辑] 内联形式

{{ftm link|feature-test-macro-name }}

生成一个指向 cpp/feature test 表格的简单链接。

  • feature-test-macro-name - 一个 FTM 名称,例如 __cpp_constexpr__cpp_lib_ratio

示例


{{ftml|feature-test-macro-name |since-rev (可选)|updated-in-rev-list (可选)}}

生成一个带修订版标记的简单链接,旨在用于诸如 宏符号索引 等页面。

  • feature-test-macro-name - 一个 FTM 名称,例如 __cpp_constexpr__cpp_lib_ratio
  • since-rev - C++ 修订版,形式为 C++20
  • update-in-rev-list - 更新发生的修订版列表,形式为 C++17, C++20

[编辑] 示例

  • {{ftml|__cpp_constexpr}} 将生成 __cpp_constexpr
  • {{ftml|__cpp_constexpr|C++11}} 将生成 __cpp_constexpr (自 C++11 起)
  • {{ftml|__cpp_lib_format|C++20|C++23}} 将生成 __cpp_lib_format (自 C++20 起)(在 C++23 中更新)
  • {{ftml|__cpp_lib_format|C++20|C++23, C++26}} 将生成 __cpp_lib_format (自 C++20 起)(在 C++23, C++26 中更新)

[编辑] 导航栏

[编辑] [{{清除}}] 文档
{{navbar
| style =

| heading1 = 
| content1 = 

| heading2 = 
| content2 = 

| heading3 = 
| content3 = 

...

| heading8 = 
| content8 = 

}}

[编辑] 其他

[编辑] 空格

[编辑] [{{清除}}] 文档

处理空格字符。

{{space|number}} - 输出number个空格字符

{{space as|text}} - 输出与text中的字符数量相同的空格字符。这对模板化代码的缩进很有用。

{{trim|text}} - 修剪开头和结尾的空白

{{sep}} - 在字符之间插入一个微小的不间断空格,以避免例如斜体字符重叠。示例:II 与 I I。

{{nbsp|number (可选)}} - 插入number个不间断空格字符 (HTML: &nbsp;)。如果未提供参数,则插入一个此类空格。

{{nbspt|number (可选)}} - 与 {{nbsp}} 相同的空格字符生成器,但使用 monospace (teletype) 字体。

{{void}} - 就像插入一个空空格,这可能需要防止在 wiki 媒体处理器应该执行操作时生成 HTML。一个例子是 foo<Ref>,其中 <Ref> 部分会触发 HTML 引擎生成引用列表。为了抑制这种情况,可以使用以下代码编写:{{c|foo<{{void}}Ref>}}

{{br}} - 行为类似于 <br> HTML 标记,但只有在字符串不能在一行中完全容纳在封闭框中时才会发生换行。这在表格中很有用,可以根据需要分割长标识符。

例如,如果标识符 __cpp_lib_allocator_traits_is_always_equal 被标记为

{{tt|__cpp_lib_allocator_}}{{br}}{{tt|traits_is_always_equal}}.

则包含它的框的渲染可能导致

__cpp_lib_allocator_traits_is_always_equal
__cpp_lib_allocator_traits_is_always_equal

[编辑] 头文件

[编辑] [{{清除}}] 文档

用于创建一个指向 C 或 C++ 头文件描述页面的链接。

{{header|name|lang=cppc (可选)}},其中name是头文件名称(不带三角括号)。

在 C++ 页面上,{{header|iostream}} 将生成 <iostream>
在 C 页面上,{{header|stdio.h}} 将生成 <stdio.h>

[编辑] 实用程序模板(仅供其他模板使用)

[编辑] 强制转换要求

[编辑] [{{清除}}] 文档

这是用于指定某些类型必须可转换为另一种类型的模板之一。所有这些模板都可以发出两种要求:必须能够将特定类型的对象转换为另一种类型,或者必须能够取消引用特定类型的对象,然后将其转换为另一种类型。此行为取决于提供的参数(t 表示普通类型,p 表示必须先取消引用的类型)。

{{cast rreq| base_type| rt=type rp=pointer_type}} - base_type 必须可转换为 rt*rp

{{cast req1| base_type| t1=type p1=pointer_type}} - t1*p1 必须可转换为 base_type

{{cast req2| base_type1| base_type2| t1=type p1=pointer_type| t2=type p2=pointer_type (可选)}} - t1*p1 必须可转换为 base_type1,或 t2*p2 必须可转换为 base_type2。如果 t2p2 均未提供,则假定 t1*p1 必须可转换为 base_type1base_type2

[编辑] 标准容器分类

[编辑] [{{刷新}}] 文档

这是用于对容器进行分类的模板组之一。

一般形式为

{{cpp/container/TERM|container|if-true|if-false (可选)}}:

  • 如果 container 属于给定的容器/适配器组,则结果为 if-true
  • 如果存在,则结果为 if-false,否则。
TERM 组中的容器/适配器
if seq
  • array, inplace_vector, vector, deque, list, forward_list
if assoc
  • set, multiset, map, multimap
  • unordered_set, unordered_multiset, unordered_map, unordered_multimap
  • flat_set, flat_multiset, flat_map, flat_multimap
if ord
  • set, multiset, map, multimap
  • flat_set, flat_multiset, flat_map, flat_multimap
if unord
  • unordered_set, unordered_multiset, unordered_map, unordered_multimap
if uniq
  • set, map
  • unordered_set, unordered_map
  • flat_set, flat_map
if eq
  • multiset, multimap
  • unordered_multiset, unordered_multimap
  • flat_multiset, flat_multimap
if set
  • set, multiset
  • unordered_set, unordered_multiset
  • flat_set, flat_multiset
if map
  • map, multimap
  • unordered_map, unordered_multimap
  • flat_map, flat_multimap
if ad
  • stack, queue, priority_queue
  • flat_set, flat_multiset, flat_map, flat_multimap
if flat
  • flat_set, flat_multiset, flat_map, flat_multimap
if c++98
  • vector, list, set, multiset, map, multimap
  • stack, queue, priority_queue
if c++11
  • array, forward_list
  • unordered_set, unordered_multiset, unordered_map, unordered_multimap
  • span
  • flat_set, flat_multiset, flat_map, flat_multimap
  • inplace_vector

[编辑] 示例

{{cpp/container/if set|multiset|Yes|No}} 的结果是 Yes。

{{cpp/container/if seq|multiset|Yes|No}} 的结果是 No。