帮助:模板
本页面描述了此维基中使用的模板。
模板提供实现以下目标的手段:
- 质量。修改内容和纠正错误变得容易。重复的内容只需编辑一次。
- 一致性。模板使“正确做事的方式”变得隐含。
- 可用性。高级格式化通过模板变得简单。
此维基中有很多模板。所有模板的列表可在Special:AllPages找到。由于此维基使用 Mediawiki CMS,因此维基百科项目中存在的所有模板都可以在此处使用。此外,模板文档可用于学习 Mediawiki 模板语法。
目录 |
[编辑] 列表
列表模板家族
- dsc ****:用于创建成员变量/函数列表。
- dcl ****:用于创建详细声明列表(包括实际声明代码的那些)。
- sdsc ****:用于创建表示语言特性各种语法的列表。用于cpp/language的子页面。
- par ****:用于创建解释函数参数的列表。
- spar ****:用于创建解释语法参数的列表。
- nv ****:用于在导航栏中创建特性列表。
- elink ****:用于创建“外部链接”列表。
[编辑] 排版助手模板
这是用于输出特殊符号的模板之一
{{!}} - 输出|
{{!!}} - 输出||
{{=}} - 输出=
{{==}} - 输出==
{{!=}} - 输出|=
{{(!}} - 输出{|
{{!)}} - 输出|}
上述文档是嵌入自Template:!/doc。 (编辑 | 历史) 本页面子页面. |
[编辑] 格式化
为封闭文本添加格式
用法 | 描述 | 结果 HTML/MediaWiki 元素 | 预览 |
---|---|---|---|
{{i|文本}} | 文本为斜体普通字体 | <i>文本</i>{{sep}}
|
文本 |
{{tt|文本}} | 文本为等宽字体 | <code>
|
文本
|
{{ttb|文本}} | 文本为粗体等宽字体 | <code><b>
|
文本
|
{{tti|文本}} | 文本为斜体等宽字体 | <code><i>
|
文本
|
{{normal|文本}} | 文本为普通字重 | ... font-weight: normal; ... |
文本 |
{{ttn|文本}} | 文本为普通字重等宽字体 | {{normal|<code> 文本</code>}} |
文本
|
{{ttni|文本}} | 文本为斜体普通字重等宽字体 | {{normal|<code><i> 文本</i></code>}} |
文本
|
{{petty|文本}} | 略小的文本 | {{small|
|
文本 |
{{small|文本}} | 小文本 | ... font-size: 0.7em; line-height: 130%; ...
|
文本 |
{{smalltt|文本}} | 小文本为等宽字体 | {{small|<code> 文本</code>}} |
文本
|
{{sub|文本}} | 下标文本为普通字体 | <sub>
|
文本 |
{{sup|文本}} | 上标文本为普通字体 | <sup>
|
文本 |
{{p|文本}} | 文本在新段落中 | <p>文本</p>
|
文本 |
上述文档是嵌入自Template:tt/doc。 (编辑 | 历史) 本页面子页面. |
[编辑] 语法高亮
这些是用于语法高亮的模板。
{{c|代码 |lang=语言 (可选)}}
- 一个基础模板,用于内联高亮代码。
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=是必需的。
- 对于范围内的代码片段(例如
[
begin,
end)
),首选{{range}}模板家族。
{{c multi|行1 |行2 (可选)|... |行8 (可选)|lang=语言 (可选)}}
- 与{{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|行1 |行2 (可选)|... |行8 (可选)|lang=语言 (可选)}}
- 与{{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|代码 |lang=语言 (可选)}}
{{co|代码 |lang=语言 (可选)}}
- 与{{c/core}}相同,只是不应用背景(例如,边框)。旨在用于表格中,其中边框由表格框架设置。
- 示例:
{{co|std::basic_regex<char>}}
结果为std::basic_regex<char>
{{box|标签 }}
- 与{{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|标签 }}
- 与{{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>,
{{cc|代码 |lang=语言 (可选)}}
- 一个基础模板,旨在内联高亮大量代码。通常在{{c}}模板无法清晰显示代码,但{{source}}会浪费太多空间时使用。
lang
是可选的;默认使用{{get lang}}返回的值。 - 示例:
{{cc|1= assert(std::hypot(3, 4) == 5);}}
结果为assert(std::hypot(3, 4) == 5);
{{source|代码 |lang=语言 (可选)}}
- 一个基础模板,旨在高亮大量代码。
lang
是可选的;默认使用{{get lang}}返回的值。 - 例如,代码
{{source|1= int main() { __builtin_printf("Hello, C++\n"); } }}
- 结果为
int main() { __builtin_printf("Hello, C++\n"); }
{{eq fun|代码1 |代码2 (可选)|... |代码4 (可选)|lang=语言 (可选)}}
- 一个基础模板,用于在可能的实现部分中表示代码片段。参数
code1
、code2
等是所描述函数模板每个版本的代码(例如,下面的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|代码1 |代码2 (可选)|... |代码4 (可选)|标题1 (可选)|... |标题4 (可选)|lang=语言 (可选)}}
附加参数
{{eq impl|ver1=链接1 |... |ver4=链接4 (可选)}}
- 与{{eq fun}}相同,具有两个附加功能
- 通过可选参数
title1=
您的标题, ...,title4=
您的标题来替换任何默认标题。默认标题与前面提到的模板{{eq fun}}相同,即第一个版本, ..., 第四个版本。 - 在标题文本“下方”自动生成内部链接。如果指定了
verN
,此模板会生成一个内部 HTML 链接,其目标名称为“Version num”。例如,如果ver2=3,将生成内部链接“#Version 3”。此功能与{{dcla}}和{{dcl rev multi}}生成内部锚点协同工作,将可能的实现代码部分链接到概要中的声明。
{{example|描述 (可选)|lang=语言 (可选)|std=语言标准 (可选)|code=要显示的代码 |p=如果非确定性则为true (可选)|output=示例输出 (可选)}}
- 表示示例的基础模板。如果未提供
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++
上述文档是嵌入自Template:source/doc。 (编辑 | 历史) 本页面子页面. |
[编辑] 链接与锚点
这些是用于创建 HTML 超链接和 HTML 锚点的模板。
[编辑] 锚点
{{anchor|1 |2 (可选)|3 (可选)|... (可选)|10 (可选)}} - 创建一个或多个(最多10个)HTML 锚点以供引用。
[编辑] 绝对链接
[编辑] 普通字体
{{lt|路径 |标题 (可选)}} - 使用绝对路径创建指向页面的链接。默认标题是路径的最后部分。
- 示例:
{{lt|cpp/language/statements}}
结果为链接:statements。 - 示例:
{{lt|cpp/language/statements|Labeled statements}}
结果为链接:Labeled statements。 - 注意:上一个示例只是使用标准模板创建相同链接的另一种方式
-
[
[cpp/language/statements|Labeled statements
]]
,结果也为Labeled statements。
{{ls|路径#部分 }} - 创建指向给定绝对路径页面上某个部分(锚点)的链接。部分文本也用作标题。要在同一页面上创建链接,路径部分应为空。
- 示例:
{{ls|cpp/language/lambda#Syntax}}
结果为链接:Syntax。 - 要在当前页面内创建指向某个部分/锚点的链接,应省略路径部分。
- 示例:
{{ls|#Relative links}}
结果为链接:Relative links(即指向本页面中该部分的链接)。
{{lsd|路径#部分 }} (“lsd”代表“Link to Section De-capitalized”,即“链接到小写部分”)- 几乎与{{ls}}相同,只是它将显示部分名称的第一个字母小写。要在同一页面上创建链接,路径部分应为空。
- 示例:
{{lsd|cpp/language/array#Arrays of unknown bound}}
结果为链接:arrays of unknown bound。 - 示例:
{{lsd|#Relative links}}
结果为链接:relative links(即指向本页面中该部分的链接)。
[编辑] 电传打字机字体
{{ltt|路径 |标题 (可选)}} - 使用绝对路径创建指向页面的链接。默认标题是路径的最后部分。
- 示例:
{{ltt|cpp/language/switch}}
结果为链接:switch。 - 示例:
{{ltt|cpp/language/switch|switch(expr)}}
结果为链接:switch(expr)。
{{ltf|路径 |标题 (可选)|args=参数 (可选)}} - 使用绝对路径创建指向页面的链接。默认标题是路径的最后部分。附加表示函数的括号,其中包含可选的参数。
- 示例:
{{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|路径 |标题 (可选)|targs=模板参数 (可选)}} - 使用绝对路径创建指向页面的链接。默认标题是路径的最后部分。附加表示模板的尖括号,其中包含可选的模板参数。
- 示例:
{{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|路径 |标题 (可选)|targs=模板参数 (可选)|args=参数 (可选)}} - 使用绝对路径创建指向页面的链接。默认标题是路径的最后部分。附加表示模板的尖括号,其中包含可选的模板参数。之后,附加表示函数的括号,其中包含可选的参数。
- 示例:
{{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|路径#部分 }} - 创建指向给定绝对路径页面上某个部分(锚点)的链接。部分文本也用作标题。要在同一页面上创建链接,路径部分应为空。
- 示例:
{{lst|cpp/ranges#maybe-const}}
结果为链接:maybe-const
。 - 示例:
{{lst|#top}}
结果为链接:top
。 - 示例:
{{lst|#top_}}
结果为链接:top_
(请注意,链接末尾的下划线字符会自动截断)。
{{l2tt|页面 |标题1 (可选)|标题2 (可选)}} - 使用绝对路径创建指向页面的链接。标题由路径的最后两部分组成,中间插入::
。每个部分都可以通过title1和title2覆盖。
- 示例:
{{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|页面 |标题1 (可选)|标题2 (可选)|args=参数 (可选)|suffix=后缀 (可选)}} - 使用绝对路径创建指向页面的链接。标题由路径的最后两部分组成,中间插入::
。每个部分都可以通过title1和title2覆盖。附加表示函数的括号,其中包含可选的参数,后跟可选的后缀。
- 示例:
{{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()。
[编辑] 斜体等宽字体
{{lti|路径 |标题 (可选)}} - 创建一个使用绝对路径的页面链接。默认标题仅为路径的最后一部分。
- 示例:
{{lti|cpp/concepts/boolean-testable}}
结果为链接:boolean-testable。
{{ltpi|路径 |标题 (可选)|targs=模板参数 (可选)}} - 创建一个使用绝对路径的页面链接。默认标题仅为路径的最后一部分。附加指示模板的尖括号,其中包含可选的模板参数。
- 示例:
{{ltpi|cpp/concepts/boolean-testable}}
结果为链接:boolean-testable <>。 - 示例:
{{ltpi|cpp/concepts/boolean-testable|targs=int}}
结果为链接:boolean-testable <int>。
{{lsi|路径#章节 }} - 创建一个指向由绝对路径指定的页面上的章节(锚点)的链接。章节文本也用作标题。要在同一页面上创建链接,路径部分应为空。
- 示例:
{{lsi|cpp/ranges#maybe-const}}
结果为链接:maybe-const
。 - 示例:
{{lsi|#top}}
结果为链接:top
。 - 示例:
{{lsi|#top_}}
结果为链接:top_
(注意链接末尾的下划线字符会自动裁剪)。
[编辑] 带有前缀 std:: 的绝对链接
以下便捷模板生成标题以 std::
开头的链接。它们可以在 {{lc}} 无法生成链接的地方使用。所有链接都以等宽字体显示。
{{ltt std|路径 }} - 使用绝对路径链接到页面。标题为 std::
后跟路径的最后一部分。
- 示例:
{{ltt std|cpp/container/mdspan}}
结果为链接:std::mdspan。
{{ltf std|路径 }} - 使用绝对路径链接到页面。标题为 std::
后跟路径的最后一部分和指示函数的括号。
- 示例:
{{ltf std|cpp/io/print}}
结果为链接:std::print()。
{{l2tt std|路径 }} - 使用绝对路径链接到页面。标题为 std::
后跟路径的最后两部分,用 ::
连接。
- 示例:
{{l2tt std|cpp/utility/basic_stacktrace/current}}
结果为链接:std::basic_stacktrace::current。
{{l2tf std|路径 }} - 使用绝对路径链接到页面。标题为 std::
后跟路径的最后两部分,用 ::
连接,并加上指示函数的括号。
- 示例:
{{l2tf std|cpp/utility/expected/value}}
结果为链接:std::expected::value()。
[编辑] 相对链接
[编辑] 普通字体
{{rl|页面 |标题 (可选)}} - 创建一个相对于本页面的链接(即子页面)。
{{rlp|页面 |标题 (可选)}} - 创建一个相对于父页面的链接。
{{rlp|/ |标题 }} - 创建一个指向父页面的链接。
{{rlps|页面#章节 }} - 创建一个指向相对于父页面的页面上的章节(锚点)的链接。生成链接的标题是章节名称。
{{rlpsd|页面#章节 }} - 创建一个指向相对于父页面的页面上的章节(锚点)的链接。生成链接的标题是将章节名称的首字母小写。
[编辑] 等宽字体
{{rlt|页面 |标题 (可选)}} - 创建一个相对于本页面的链接(即子页面)。
{{rlpt|页面 |标题 (可选)}} - 创建一个相对于父页面的链接。
{{rlpt|/ |标题 }} - 创建一个指向父页面的链接。
{{rlpf|页面 |标题 (可选)|args=参数 (可选)}} - 创建一个相对于父页面的链接。附加指示函数的括号,其中包含可选的参数。
{{rlpst|页面#章节 }} - 创建一个指向相对于父页面的页面上的章节(锚点)的链接。生成链接的标题是章节名称。
{{ttt|标识符 }} - 创建一个指向当前页面的链接(通过 #top 链接)。
[编辑] 斜体等宽字体
{{rli|页面 |标题 (可选)}} - 创建一个相对于本页面的链接(即子页面)。
{{rlpi|页面 |标题 (可选)}} - 创建一个相对于父页面的链接。
{{rlpi|/ |标题 }} - 创建一个指向父页面的链接。
{{rlpsi|页面#章节 }} - 创建一个指向相对于父页面的页面上的章节(锚点)的链接。生成链接的标题是章节名称。
[编辑] 装饰链接
{{attr|属性 |标题 (可选)|附加标题 (可选)|lang=语言 (可选)}}
- attribute - 属性说明符名称。
- title - 属性说明符标题。
- additional title - 标题后的附加元素。
- language - cpp 或 c。如果未给出 language,则使用 {{get lang}}。
- 示例:
{{attr|assume}}
结果为[[assume]]
。 - 示例:
{{attr|noreturn|_Noreturn|lang=c}}
结果为[[_Noreturn]]
。 - 示例:
{{attr|deprecated|3=("because")}}
结果为[[deprecated("because")]]
。
上述 文档 被包含自 Template:rl/doc。(编辑 | 历史) 本页面子页面. |
[编辑] 标准化链接和信息
[编辑] WG21
生成指向 C++ 工作组 (WG21) 文档的链接,分别是 CWG/LWG 页面或“提案”文件。
{{wg21|CWG 或 LWG 或 WG21 文档编号 |full (可选)}}
- full (可选) 参数仅适用于“提案”文档,应用它将生成一个指向 GitHub 页面的附加链接(WG21 在 GitHub 上处理提案)。
[编辑] stddoc
用于生成指向 WG14/WG21 文档的链接。
WG/语言(C 或 C++)由 {{get lang}} 确定,除非提供了带有值 c 或 cpp 的 lang (可选) 参数(如果支持)。
{{stddoc|文档编号 |链接标题 (可选)|lang=lang (可选)}}
- 生成一个指向 WG14/WG21 文档的链接,并带有给定的文档编号。可以提供自定义的链接标题,默认情况下它是大写的文档编号。在 C 模式下,文档编号可以包含文件扩展名,例如
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}}
结果为:N5001 - 目前,
{{stddoc latest draft|Latest C++ draft}}
结果为:Latest C++ draft - 目前,
{{stddoc latest draft|Latest C draft|lang=c}}
结果为:Latest C draft
- 目前,
[编辑] stddocs
{{stddocs|文档列表 |input-separator=空格 (可选)|output-separator=换行符 (可选)}}
- 一个便捷模板,用于通过将输入列表的每个元素包装到 {{stddoc}} 模板中来生成 WG14/WG21 文档链接列表。
- docs-list — 第一个位置参数,一个输入文档列表。如果未提供第二个参数,则输入列表的元素必须用空格分隔,例如
{{stddocs|P0202R3 P0879R0 LWG3256 LWG3792}}
。如果未提供第三个参数,则输出链接将用 <br> 分隔。 - input-separator — 第二个位置参数。如果提供,则定义输入列表分隔符。
- output-separator — 第三个位置参数。如果提供,则定义输出列表分隔符。
- 限制:输入列表中最多支持 8 个元素。
- 示例:
{{stddocs|P0202R3 P0879R0 LWG3256 LWG3792}}
结果为
- 示例:
{{stddocs|P0202R3, P0879R0, LWG3256, LWG3792|,}}
结果为
- 示例:
{{stddocs|P0202R3/P0879R0/LWG3256/LWG3792|/|—}}
结果为
[编辑] stdinfo
用于提供 C/C++ 标准化信息。
- 语言(C 或 C++)由 {{get lang}} 确定,除非提供了带有值 c 或 cpp 的 lang (可选) 参数(如果支持)。
{{stdinfo latest draft|rev 或 doc 或 date |lang=lang (可选)}}
- 是 C/C++ 标准草案信息的中心。根据第一个参数的值,返回的信息是:
值 信息 示例 rev 版本号 {{stdinfo latest draft|rev}}
结果为 26{{stdinfo latest draft|rev|lang=c}}
结果为 2ydoc 文档编号 {{stdinfo latest draft|doc}}
结果为 n5001{{stdinfo latest draft|doc|lang=c}}
结果为 n3467date 文档日期 {{stdinfo latest draft|date}}
结果为 2024-12-17{{stdinfo latest draft|date|lang=c}}
结果为 2025-02-09
- 用于以下更高级别模板中:
- {{stdinfo latest draft docnum}},{{stdinfo latest draft docdate}},{{stdinfo next version number}},{{stdinfo next version}}。
{{stdinfo latest draft docnum|lang=lang (可选)}}
- C/C++ 标准最新草案的文档编号。
- C 的结果为 n3467。
- C++ 的结果为 n5001。
{{stdinfo latest draft docdate|lang=lang (可选)}}
- C/C++ 标准最新草案的文档日期。
- C 的结果为 2025-02-09。
- C++ 的结果为 2024-12-17。
{{stdinfo next version number|lang=lang (可选)}}
- 下一个 C/C++ 标准的版本号。
- C 的结果为 2y。
- C++ 的结果为 26。
- 下一个 C/C++ 标准的版本(带有 C 或 C++ 前缀)。结果为:C++
{{stdinfo current version number}}
- 当前 C/C++ 标准的版本号。结果为:20
- 当前 C/C++ 标准的版本(带有 C 或 C++ 前缀)。结果为:C++20
[编辑] 当前语言
{{get lang}}
- 如果页面标题以“c/”开头,则输出值为“c”;如果页面标题以“cpp/”开头,则输出值为“cpp”。否则,输出值为“cpp”。
{{get lang formal}}
- 如果页面标题以“c/”开头,则输出值为“C”;如果页面标题以“cpp/”开头,则输出值为“C++”。否则,输出值为“C++”。
[编辑] POSIX
{{posix|页面 (可选)|等宽标题 (可选)|任意标题 (可选)}}
- 生成指向 POSIX 函数文档页面的链接。此模板内部使用 {{posix/core}}(见下文)。
- 如果没有提供参数,则会生成指向文档根目录的链接,标题为 POSIX 版本。
- page - 不带 .html 扩展名的页面名称(将附加)。如果未提供其他参数,它也用作等宽字体标题。
- mono-text - 如果提供,将用作等宽字体标题。
- any-title - 如果提供,将按原样用作标题。此参数优先于 mono-text,即如果提供,则忽略 mono-text。
[编辑] 示例
-
{{posix}}
结果为 POSIX.1-2024/IEEE Std 1003.1-2024。 -
{{posix|strtok}}
结果为strtok
-
{{posix|strtok|strtok_r}}
结果为strtok_r
-
{{posix|strtok||POSIX also provides {{tt|strtok_r}}}}
结果为 POSIX also providesstrtok_r
-
{{posix/core|链接部分和标题 (可选)}}
- 如果提供了链接的“稳定”部分,则生成指向 POSIX 文档页面的链接。
- 此模板应在 POSIX 版本及其文档页面的根链接更改时进行更新。
- 如果未提供参数,则会生成指向文档根目录的链接,标题为 POSIX 版本,即
{{posix/core}}
结果为 POSIX.1-2024/IEEE Std 1003.1-2024。 - 否则,参数应为“稳定”部分,后跟标题,例如:
-
{{posix/core|basedefs/V1_chap04.html#tag_04_16 the Epoch}}
结果为 the Epoch。
- 如果未提供参数,则会生成指向文档根目录的链接,标题为 POSIX 版本,即
上述 文档 被包含自 Template:stddoc/doc。(编辑 | 历史) 本页面子页面. |
[编辑] 注解
[编辑] {{mark}} 模板系列
创建一个注解。
- 通用
{{mark|文本 |class=类 (可选)}} - 创建一个包含给定文本的注解,可以提供额外的类用于样式。
- 示例:
{{mark|text}}
结果为 (text)。
{{mark rev|文本 |class=类 (可选)}} - 创建一个包含给定文本的注解,可以提供额外的类用于样式。
- 示例:
{{mark rev|since C++1998}}
结果为 (since C++1998)。
{{mark tooltip|文本 |工具提示 |class=类 (可选)}} - 创建一个包含给定文本和工具提示的注解,可以提供额外的类用于样式。
- 示例:
{{mark tooltip|99% complete|XXX not supported}}
结果为 (99% complete*)。
- 杂项
模板 | 注解 |
---|---|
{{mark attribute}} | (属性说明符) |
{{mark deprecated}} | (已弃用) |
{{mark optional}} | (可选) |
{{mark cond present}} | (有条件存在) |
{{mark implicit}} | (隐式声明) |
{{mark concept}} | (概念) |
{{mark expos}} | (仅作说明*) |
{{mark expos concept}} | (仅用于说明目的的概念*) |
{{mark tag}} | (标签) |
{{mark expos mem type}} | (仅供说明的成员类型*) |
{{mark named req}} | (命名要求) |
{{mark typedef}} | (typedef) |
{{mark type alias}} | (类型别名) |
{{mark enum}} | (枚举) |
{{mark mem enum}} | (公共成员枚举) |
{{mark keyword}} | (关键词) |
{{mark macro keyword}} | (关键字宏) |
{{mark preprocessing directive}} | (预处理指令) |
{{mark macro opr}} | (操作符宏) |
{{mark language}} | (语言) |
- C++ 标准
模板 | 注解 |
---|---|
{{mark deprecated c++98}} | (C++98 起弃用) |
{{mark c++03}} | (C++03) |
{{mark since c++03}} | (自 C++03 起) |
{{mark until c++03}} | (直到 C++03) |
{{mark c++11}} | (C++11) |
{{mark since c++11}} | (C++11 起) |
{{mark constexpr since c++11}} | (自 C++11 起 constexpr) |
{{mark noexcept since c++11}} | (C++11 起无异常抛出) |
{{mark deprecated c++11}} | (在 C++11 中已弃用) |
{{mark until c++11}} | (C++11 前) |
{{mark c++14}} | (C++14) |
{{mark since c++14}} | (C++14 起) |
{{mark constexpr since c++14}} | (C++14 起为 constexpr) |
{{mark noexcept since c++14}} | (自 C++14 起 noexcept) |
{{mark deprecated c++14}} | (在 C++14 中已弃用) |
{{mark until c++14}} | (直到 C++14) |
{{mark c++17}} | (C++17) |
{{mark since c++17}} | (C++17 起) |
{{mark constexpr since c++17}} | (自 C++17 起为 constexpr) |
{{mark noexcept since c++17}} | (自 C++17 起 noexcept) |
{{mark deprecated c++17}} | (C++17 中已弃用) |
{{mark until c++17}} | (C++17 前) |
{{mark c++20}} | (C++20) |
{{mark since c++20}} | (C++20 起) |
{{mark constexpr since c++20}} | (C++20 起为 constexpr) |
{{mark noexcept since c++20}} | (自 C++20 起 noexcept) |
{{mark deprecated c++20}} | (C++20 中已弃用) |
{{mark until c++20}} | (C++20 前) |
{{mark c++23}} | (C++23) |
{{mark since c++23}} | (C++23 起) |
{{mark constexpr since c++23}} | (自 C++23 起 constexpr) |
{{mark noexcept since c++23}} | (自 C++23 起 noexcept) |
{{mark deprecated c++23}} | (C++23 中已弃用) |
{{mark updated c++23}} | (在 C++23 中更新) |
{{mark until c++23}} | (直至 C++23) |
{{mark c++26}} | (C++26) |
{{mark since c++26}} | (C++26 起) |
{{mark constexpr since c++26}} | (C++26 起为 constexpr) |
{{mark noexcept since c++26}} | (自 C++26 起 noexcept) |
{{mark deprecated c++26}} | (C++26 中已弃用) |
{{mark updated c++26}} | (在 C++26 中更新) |
{{mark until c++26}} | (直到 C++26) |
- C 标准
模板 | 注解 |
---|---|
{{mark c95}} | (C95) |
{{mark since c95}} | (自 C95 起) |
{{mark until c95}} | (直到 C95) |
{{mark c99}} | (C99) |
{{mark since c99}} | (C99 起) |
{{mark until c99}} | (直到 C99) |
{{mark c11}} | (C11) |
{{mark since c11}} | (C11 起) |
{{mark until c11}} | (C11 之前) |
{{mark c17}} | (C17) |
{{mark since c17}} | (自 C17 起) |
{{mark deprecated c17}} | (在 C17 中已弃用) |
{{mark until c17}} | (直到 C17) |
{{mark c23}} | (C23) |
{{mark since c23}} | (自 C23 起) |
{{mark deprecated c23}} | (在 C23 中已弃用) |
{{mark until c23}} | (直至 C23) |
{{mark since none}} | (自 {std} 起) |
{{mark until none}} | (至 {std}) |
- 组合
{{mark life|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 中移除)
- 技术规范
模板 | 注解 |
---|---|
{{mark since libfund ts}} | (库基础 TS) |
{{mark since libfund ts 2}} | (库基础 TS v2) |
{{mark since libfund ts 3}} | (库基础 TS v3) |
{{mark since fs ts}} | (文件系统 TS) |
{{mark since parallelism ts}} | (并行 TS) |
{{mark since parallelism ts 2}} | (并行技术规范 v2) |
{{mark since concepts ts}} | (概念 TS) |
{{mark since concurrency ts}} | (并发技术规范) |
{{mark since concurrency ts 2}} | (并发 TS v2) |
{{mark since tm ts}} | (TM TS) |
{{mark since special functions tr}} | (特殊函数 TR) |
{{mark since modules ts}} | (模块 TS) |
{{mark since coro ts}} | (协程 TS) |
{{mark since reflection ts}} | (反射 TS) |
- 函数
模板 | 注解 |
---|---|
{{mark fun}} | (函数) |
{{mark expos fun}} | (exposition-only function*) |
{{mark tfun}} | (函数模板) |
{{mark expos tfun}} | (exposition-only function template*) |
{{mark mem fun}} | (公开成员函数) |
{{mark mem sfun}} | (公共静态成员函数) |
{{mark mem vfun}} | (虚公共成员函数) |
{{mark priv mem fun}} | (私有成员函数) |
{{mark prot mem fun}} | (受保护成员函数) |
{{mark prot mem vfun}} | (虚受保护成员函数) |
{{mark expos mem fun}} | (仅用于说明的成员函数*) |
{{mark expos mem sfun}} | (exposition-only static member function*) |
{{mark macro fun}} | (函数宏) |
{{mark macro tfun}} | (类型泛型函数宏) |
- 类
模板 | 注解 |
---|---|
{{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}} | (public static 成员常量) |
{{mark expos mem sconst}} | (仅用于解释的静态成员常量*) |
- 对象
模板 | 注解 |
---|---|
{{mark mem obj}} | (公有成员对象) |
{{mark priv mem obj}} | (私有成员对象) |
{{mark prot mem obj}} | (protected 成员对象) |
{{mark expos mem obj}} | (仅用于阐释的成员对象*) |
{{mark expos mem var}} | (exposition-only variant member object*) |
{{mark custpt}} | (定制点对象) |
{{mark rao}} | (范围适配器对象) |
{{mark niebloid}} | (算法函数对象) |
- 容器标记支持
{{cpp/container/mark std|container}} - 根据给定标准 container 的修订版本,输出 (C++11), (C++20), (C++23) 等。对于 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)
以上文档是从Template:mark/doc嵌入的。 (编辑 | 历史) 本页面子页面. |
[编辑] {{cmark}} 模板家族
为函数创建注释。已定义了一些注释
{{cmark virtual}} 结果为 [virtual]
{{cmark static}} 结果为 [static]
{{cmark deleted}} 结果为 [deleted]
以上文档是从Template:cmark/doc嵌入的。 (编辑 | 历史) 本页面子页面. |
[编辑] 版本控制
用于声明描述的某些部分仅对标准的特定修订版本有效。
{{rev begin|noborder=true_if_noborder (可选)}}
- 开始一系列特定于标准特定修订版本的文本片段。如果
noborder
参数为 true,则表格将无边框显示,并尽可能减少内边距。
{{rev|since=since-std (可选)|until=until-std (可选)|text }}
- 指定 text 仅在标准修订版本 since-std 到 until-std 之间有效(until-std 不包含)。
{{rev end}}
- 结束一系列特定于标准特定修订版本的文本片段。
{{rrev|noborder=true_if_noborder (可选)|since=since-std (可选)|until=until-std (可选)|text }}
{{rrev multi|noborder=true_if_noborder (可选)|sinceX=since-std (可选)|untilX=until-std (可选)|revX=text |... }}
- 一个组合的 {{rev begin}}/{{rev}}/{{rev end}}。最多支持 7 个片段。
sinceX
的默认值是untilX-1
,untilX
的默认值是sinceX+1
。因此,当片段相对较短且修订版本范围连续时,它最有用。此模板可以被替换。
{{rev inl|id=id (可选)|since=since-std (可选)|until=until-std (可选)|noborder=true_if_noborder (可选)|text }}
如果 `noborder` 参数为 `true`,则省略边框。
以上文档是从Template:rev/doc嵌入的。 (编辑 | 历史) 本页面子页面. |
[编辑] 特性测试宏渲染
[编辑] 特性测试宏支持
用于生成描述给定特性测试宏的链接和表格。
[编辑] 单行形式
{{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,则该表将成为一个“可排序”的维基表格。
- 注意:以前,支持两个额外的(可选)参数:std 和 comment(两者现在都被忽略),用于有条件地添加/隐藏列。Std、Value 和 Feature 列始终存在。
{{ftm|cpp-macro |feature |value=value |std=C++XX |rowspan=R (可选)|dr=yes or XZ (可选)}}
- cpp-macro 提供特性测试宏名称,例如
__cpp_lib_constexpr
- feature 提供特性描述
- value 提供特性测试值(日期),例如 202202L
- std 提供修订字符串,例如 (C++23)
- rowspan 是一个可选参数(例如,
rowspan="3"
),其含义与标准维基表格中的相同,即,如果提供,它将导致 Feature-test macro 列中的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) | 评论 #1 |
__cpp_lib_fold |
202207L |
(C++23) | 评论 #2 |
__cpp_lib_ranges |
201911L |
(C++20) | 评论 #3 |
202106L |
(C++20) | 评论 #4 | |
202110L |
(C++20) (DR) |
评论 #5 | |
202202L |
(C++23) (DR20) |
评论 #6 | |
__cpp_lib_ranges_contains |
202207L |
(C++23) | 评论 #7 |
__cpp_lib_ranges_iota |
202202L |
(C++23) | 评论 #8 |
__cpp_lib_ranges_starts_ends_with |
202106L |
(C++23) | 评论 #9 |
__cpp_lib_shift |
201806L |
(C++20) | 评论 #10 |
202202L |
(C++23) | 评论 #11 |
[编辑] 内联形式
{{ftm link|feature-test-macro-name }}
生成指向 cpp/feature test 表格的简单链接。
- feature-test-macro-name - FTM 名称,例如
__cpp_constexpr
或__cpp_lib_ratio
示例
-
{{ftm link|__cpp_constexpr}}
结果为__cpp_constexpr
-
{{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 中更新)
-
以上文档是从Template:ftm/doc嵌入的。 (编辑 | 历史) 本页面子页面. |
[编辑]
{{navbar | style = | heading1 = | content1 = | heading2 = | content2 = | heading3 = | content3 = ... | heading8 = | content8 = }}
以上文档是从Template:navbar/doc嵌入的。 (编辑 | 历史) 本页面子页面. |
[编辑] 杂项
[编辑] 空格
[编辑] 处理空格字符
{{space|number}} - 输出 number 个空格字符。请注意,在开头/结尾位置,这些空格字符可能会被 {{trim}} 截断,这与来自 {{nbsp}}/{{nbspt}} 家族的“空格”不同。
{{space as|text}} - 输出与 text 中字符数量相同的空格字符。对于模板化代码的缩进很有用。
{{trim|text}} - 移除开头和结尾的空白字符
{{sep}} - 在字符之间插入一个微小的非断行空格,以避免例如斜体字符重叠。示例:II 对比 I I。
{{nbsp|number (可选)}} - 插入 number 个不换行空格字符(HTML: )。不带参数时插入一个这种空格。这些“空格”(在开头/结尾位置)不会被 {{trim}} 截断。
{{nbspt|number (可选)}} - 与 {{nbsp}} 相同的空格字符生成器,但在 monospace
(teletype
) 字体中。这些“空格”不会被 {{trim}} 截断。
{{void}} - 仿佛插入一个空空格,这在 wiki-media 处理器应该发挥作用时可能需要防止 HTML 生成。一个例子是 foo<Ref>,其中 <Ref> 部分会触发 HTML 引擎生成引用列表。为了抑制这种情况,这段代码可以写成 {{c|foo<{{void}}Ref>}}
。
{{br}} - 行为类似于 HTML 标签 <br>,但只有当字符串不适合在包含框中显示为一行时才会换行。在表格中用于可选地拆分长标识符。
示例。将标识符 __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 |
以上文档是从Template:space/doc嵌入的。 (编辑 | 历史) 本页面子页面. |
[编辑] 头文件
用于创建指向 C 或 C++ 头文件描述页面的链接。
{{header|name|lang=cpp or c (可选)}},其中 name 是头文件名称(不带尖括号)。
- 在 C++ 页面上,{{header|iostream}} 结果为 <iostream>
以上文档是从Template:header/doc嵌入的。 (编辑 | 历史) 本页面子页面. |
[编辑] 实用模板(仅供其他模板使用)
[编辑] 转换要求
这是用于指定某种类型必须可转换为另一种类型的模板之一。所有这些模板都可以发出以下任一要求:必须能够将特定类型的对象转换为另一种类型,或者必须能够先解引用特定类型的对象然后将其转换为另一种类型。此行为取决于提供的参数(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。如果未提供 t2
或 p2
,则假定 t1
或 *p1
必须可同时转换为 base_type1 和 base_type2。
以上文档由嵌入自Template:cast rreq/doc。(编辑 | 历史) 本页面子页面. |
[编辑] 标准容器分类
这是一组用于分类容器的模板之一。
一般形式是
{{cpp/container/TERM|容器|if-true|if-false (可选)}}
:
- 如果容器是给定容器/适配器组中的一个,则结果为if-true。
- 否则,结果为if-false(如果存在)。
TERM | 组中的容器/适配器 |
---|---|
if seq(如果为序列容器) |
|
if assoc(如果为关联容器) |
|
if ord(如果为有序容器) |
|
if unord(如果为无序容器) |
|
if uniq(如果为唯一键容器) |
|
if eq(如果为等价键容器) |
|
if set(如果为集合) |
|
if map(如果为映射) |
|
if ad(如果为适配器) |
|
if flat(如果为扁平容器) |
|
if c++98(如果为C++98容器) |
|
if c++11(如果为C++11容器) |
|
[编辑] 示例
{{cpp/container/if set|multiset|Yes|No}}
结果为 Yes。
{{cpp/container/if seq|multiset|Yes|No}}
结果为 No。
以上文档由嵌入自Template:cpp/container/if_assoc/doc。(编辑 | 历史) 本页面子页面. |