Help:Templates

来自cppreference.com

此页面描述此维基中使用的模板。

模板提供达成下列目的的手段:

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

此维基中有大量模板。所有模板的列表可用于特殊页面:所有页面。因为此维基使用 Mediawiki CMS ,故维基百科项目中的所有现存模板都能用于此。额外的好处是能用模板文档学习 Mediawiki 模板语法。

目录

[编辑]列表

列表模板系列

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

[编辑]印刷辅助模板

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

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

{{!}} - 输出 |

{{!!}} - 输出 ||

{{=}} - 输出 =

{{==}} - 输出 ==

{{!=}} - 输出 |=

{{(!}} - 输出 {|

{{!)}} - 输出 |}

[编辑]格式化

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

添加格式到被环绕的文本:

用途  预览  描述 生成的 HTML 元素
''文本 '' 文本斜体普通字体下的文本<i>文本</i>
'''文本 ''' text加粗普通字体下的文本<b>文本</b>
{{i|文本 }} 文本  斜体字体下的文本<i>文本</i>{{sep}}
{{tt|文本 }} 文本 等宽字体下的文本<code>文本</code>
{{ttb|文本 }} 文本 加粗等宽字体下的文本<code><b>文本</b></code>
{{tti|文本 }} 文本 斜体等宽字体下的文本<code><i>文本</i></code>
{{normal|文本 }} 文本 正常粗细的文本 ... font-weight: normal; ...
{{ttn|文本 }} 文本 正常粗细的等宽字体下的文本{{normal|{{tt|文本}}}}
{{ttni|文本 }} 文本 正常粗细的斜体等宽字体下的文本  {{normal|{{tti|文本}}}}
{{petty|文本 }} 文本 较小的文本<small>文本</small>
{{small|文本 }} 文本 小号文本... font-size: 0.7em;line-height: 130%; ...
{{smalltt|文本 }} 文本 小号等宽字体下的文本  {{small|{{tt|文本}}}}
{{sub|文本 }} 文本 通常字体下的文本 下标 <sub>文本</sub>
{{sup|文本 }} 文本 通常字体下的文本 上标 <sup>文本</sup>
{{p|文本 }}

文本

新段落中的文本<p>文本</p>

[编辑]语法高亮

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

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


{{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=
  • 对于范围中的代码块(例如 [beginend)),应优先考虑使用 {{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|line1 |line2 (可选)|... |line8 (可选)|lang=language (可选)}}

同 {{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=语言 (可选)}}

同 {{c}},只不过不应用背景(例如边界盒)。应当仅用于其他模板中。
例如:{{c/core|std::puts("C++");}} 会生成 std::puts("C++");


{{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>,
                        ranges::range_reference_t<R2>>


{{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("你好,C++\n"); } }} 
会生成
int main(){ __builtin_printf("你好,C++\n");}


{{eq fun|代码1 |代码2 (可选)|... |代码4 (可选)|lang=语言 (可选)}}

基本模板,用于展示 可能实现 段落中的代码片段。参数 代码1代码2 等是所描述的函数模板的各个版本的代码(比如下面情形中的 std::fill 一族代码)。如果完全不提供代码,那么该模板会产生 {{todo}}。lang 是可选的;默认使用 {{get lang}} 返回的值。

通常在 {{c}} 模板不显示可读代码,但 {{source}} 会浪费太多空间时使用。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 时,此模板生成目标名字为“版本 num”的内部 HTML 链接。例如,若有 ver2=3 则将产生内部链接“#版本 3”。此种能力可以和 {{dcla}} 和 {{dcl rev multi}} 所产生的内部锚点相配合,以将 可能实现 代码段连接到 纲要 部分的声明。


{{example|描述 (可选)|lang=语言 (可选)|std=语言标准 (可选)|code=要展示的代码 |p=输出不确定时为true (可选)|output=样例输出 (可选)}}

示例的基本模板。如果 code 不存在,那么该模板会产生 {{todo}}。lang 默认为 {{get lang}} 返回的值。 output 指定代码所显示的输出。如果输出不确定,应当将设 ptrue 以指示这点(显示可能的输出,而非单纯的输出)。
下列语言标准可用:
cxx98, cxx03, cxx11, cxx14, c89, c99, c11
例如,以下代码:
 {{example | 注释字符串 | code= int main() { __builtin_puts("你好,C++"); } | p=true | output= 你好,C++ }} 
会产生以下内容:

注释字符串

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

可能的输出:

你好,C++

[编辑]链接与锚点

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

这些是用于制作 HTML 超链接和 HTML 锚点的模板。

[编辑]锚点

{{anchor|1 |2 (可选)|3 (可选)|... (可选)|10 (可选)}} - 创建一个或多个(最多 10 个)HTML 锚点。

[编辑]绝对链接

[编辑]正常字体

{{lt|路径 |标题 (可选)}} - 用绝对路径链接页面。默认标题只有路径的最后一部分。

例如:{{lt|cpp/language/statements}} 会产生链接:statements
例如:{{lt|cpp/language/statements|带标签语句}} 会产生链接:带标签语句
注意:前面的例子只是使用标准模板创建以下相同链接
[[cpp/language/statements|带标签语句]] 的另一种方式,它也会产生带标签语句

{{ls|路径#段落 }} - 用绝对路径链接页面的某个段落(锚点)。标题就是段落。要创建到同页面的链接,路径 部分应留空。

例如:{{ls|cpp/language/lambda#语法}} 会产生链接:语法
要链接到本页的段落或锚点时,省略路径 即可。
例如:{{ls|#相对链接}} 会产生链接:相对链接

{{lsd|路径#段落 }} - 用绝对路径链接页面的某个段落或锚点。标题就是首字母小写后的段落。要创建到同页面的链接,路径 部分应留空。

例如:{{lsd|cpp/language/array#未知边界的数组}} 会产生链接:未知边界的数组
例如:{{lsd|#相对链接}} 会产生链接:相对链接(即到本页面中的链接)。

[编辑]电传字体

{{ltt|路径 |标题 (可选)}} - 用绝对路径链接页面。默认标题只有路径的最后一部分。

例如:{{ltt|cpp/language/switch}} 会产生链接:switch
例如:{{ltt|cpp/language/switch|switch(expr)}} 会产生链接:switch(expr)

{{ltf|路径 |标题 (可选)|args=实参 (可选)}} - 用绝对路径链接页面。默认标题只有路径的最后一部分。链接以 teletype 字体出现。后附指示函数的括号,包围可能提供的实参

例如:{{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=模板实参 (可选)}} - 用绝对路径链接页面。默认标题只有路径的最后一部分。链接以 teletype 字体出现。后附指示模板的尖括号,包围可能提供的模板实参

例如:{{ltp|cpp/container/vector}} 会产生链接:vector<>
例如:{{ltp|cpp/container/vector|targs=int}} 会产生链接:vector<int>

{{ltpf|路径 |标题 (可选)|targs=模板实参 (可选)|args=实参 (可选)}} - 用绝对路径链接页面。默认标题只有路径的最后一部分。链接以 teletype 字体出现。后附指示模板的尖括号,包围可能提供的模板实参。然后再后附指示函数的括号,包围可能提供的实参

例如:{{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 (可选)}} - 用绝对路径制作到页面的链接。在其间插入 :: 。这些部分之一能被 标题1标题2 覆写。链接以 teletype 字体出现。

例如:{{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=后缀 (可选)}} - 用绝对路径制作到页面的链接。在其间插入 :: 。这些部分之一能被 标题1标题2 覆写。链接以 teletype 字体出现。后附指示函数的括号,包围可能提供的 实参 并后随可能提供的 后缀

例如:{{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=模板实参 (可选)}} - 用绝对路径链接页面。默认标题只有路径的最后一部分。链接以 teletype 字体出现,其中模板名称以斜体 出现。后附指示模板的尖括号,包围可能提供的模板实参

例如:{{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:: 后随路径的最后两部分(以 std:: 分隔)。

例如:{{l2tt std|cpp/utility/basic_stacktrace/current}} 会产生链接:std::basic_stacktrace::current

{{l2tf std|路径 }} - 用绝对路径链接页面。标题是 std:: 后随路径的最后两部分(以 std:: 分隔)以及指示函数的括号。

例如:{{l2tf std|cpp/utility/expected/value}} 会产生链接:std::expected::value()

[编辑]相对链接

[编辑]正常字体

{{pp}} - 返回上级页面(如果有)的名字,很大可能是功能点的名字。内部空格(如果有)替换为下划线。

{{rl|路径 |标题 (可选)}} - 制作到相对于此页面的页面(即子页面)的链接。

{{rlp|路径 |标题 (可选)}} - 制作到相对于上级页面的页面的链接。

{{rlp|/ |标题 }} - 制作到上级页面的链接。

{{rlps|路径#段落 }} - 制作到相对于上级页面的页面的段落(锚点)的链接。链接标题就是段落

{{rlpsd|路径#段落 }} - 制作到相对于上级页面的页面的段落(锚点)的链接。链接标题就是首字母小写后的段落

[编辑]电传字体

{{ppt}} - 返回上级页面(如果有)的名字。内部空格(如果有)替换为下划线。

{{rlt|路径 |标题 (可选)}} - 制作到相对于此页面的页面(即子页面)的链接。

{{rlpt|路径 |标题 (可选)}} - 制作到相对于上级页面的页面的链接。

{{rlpt|/ |标题 }} - 制作到上级页面的链接。

{{rlpf|路径 |标题 (可选)|args=实参 (可选)}} - 制作到相对于上级页面的页面的链接。后附指示函数的括号,包围可能提供的 实参

{{rlpst|路径#段落 }} - 制作到相对于上级页面的页面中 段落(锚点)的链接。生成的链接标题就是段落名。

{{ttt|标识符 }} - (通过 #top 链接)制作到相当前页面的链接。

例如:{{ttt|当前页}} 会产生 当前页

[编辑]电传斜体

{{ppi}} - 返回上级页面(如果有)的名字。内部空格(如果有)替换为下划线。

{{rli|路径 |标题 (可选)}} - 制作到相对于此页面的页面(即子页面)的链接。

{{rlpi|路径 |标题 (可选)}} - 制作到相对于上级页面的页面的链接。

{{rlpi|/ |标题 }} - 制作到上级页面的链接。

{{rlpsi|路径#段落 }} - 制作到相对于上级页面的页面的段落(锚点)的链接。链接标题就是段落

[编辑]修饰后的链接

{{attr|属性 |标题 (可选)|额外标题 (可选)|lang=语言 (可选)}}

制作到 C/C++ 语言属性说明符的描述。参数:
  • 属性 - 属性说明符的名字。
  • 标题 - 属性说明符的标题。
  • 额外标题 - 标题后的额外元素。
  • 语言 - cppc。如果没有提供语言,那么就会使用 {{get lang}}。
例如:{{attr|assume}} 会产生 [[assume]]
例如:{{attr|noreturn|_Noreturn|lang=c}} 会产生 [[_Noreturn]]
例如:{{attr|deprecated|3=("because")}} 会产生 [[deprecated("because")]]

[编辑]注解

[编辑]{{mark}} 模板族

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

创建一个注解。

通用

{{mark|文本 |class= (可选)}} - 创建包含给定文本 的注解,可以额外提供 用于样式处理。

例如:{{mark|文本}} 会生成 (文本)

{{mark rev|文本 |class= (可选)}} - 创建包含给定文本 的注解,可以额外提供 用于样式处理。

例如:{{mark rev|C++1998 起}} 会生成 (C++1998 起)

{{mark tooltip|文本 |提示信息 |class= (可选)}} - 创建包含给定文本 且带提示信息 的注解,可以额外提供 用于样式处理。

例如:{{mark tooltip|已完成 99%|不支持 XXX}} 会生成 (已完成 99%*)
杂项
模板 注解
{{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 起为 noexcept)
{{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 前)
  • 能设置可选参数 bryes 以便在单独的行中显示每个注解,比如
例:{{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}} (并行 TS v2)
{{mark since concepts ts}} (概念 TS)
{{mark since concurrency ts}} (并发 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}} (仅用于阐述的函数*)
{{mark tfun}} (函数模板)
{{mark expos tfun}} (仅用于阐述的函数模板*)
{{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}} (仅用于阐述的静态成员函数*)
{{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}} (公开静态成员常量)
{{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}} (算法函数对象)


容器标记支持

{{cpp/container/mark std|容器}} - 根据给定标准 容器 的版本,输出 (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)

[编辑]{{cmark}} 模板族

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

创建函数的注解。已经预先定义几个注解:

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

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

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

[编辑]标注版本

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

用于表示描述中的一部分仅对某一特定版本的标准有效。

{{rev begin|noborder=无边框时为true (可选)}}

以上标记开始一段仅对某一特定版本有效的文字。如果 noborder 参数是 true,显示的表格将不包含表格线,并且填充将尽可能小。

{{rev|since=起始标准 (可选)|until=截止标准 (可选)|文本 }}

指示文本 只对标准的起始标准 版本至截止标准 版本有效(不包括截止标准)。

{{rev end}}

以上标记结束仅对某一特定版本有效的文字的片段。

{{rrev|noborder=无边框时为true (可选)|since=起始标准 (可选)|until=截止标准 (可选)|文本 }}

组合的 {{rev begin}}/{{rev}}/{{rev end}} ,用于仅需单个 {{rev}} 时。
如果既不提供起始标准 也不提供截止标准,那么就只会单独展示文本

{{rrev multi|noborder=无边框时为true (可选)|sinceX=起始标准 (可选)|untilX=截止标准 (可选)|revX=文本 |... }}

组合的 {{rev begin}}/{{rev}}/{{rev end}} 。支持至多 7 个片段。 sinceX 的默认值为 untilX-1untilX 的默认值为 sinceX+1 。从而,这在片段相对短而校订版本范围连续时最有用。此模板可被替换。

{{rev inl|id=id (可选)|since=起始标准 (可选)|until=截止标准 (可选)|noborder=无边框时为true (可选)|文本 }}

与 {{rev}} 相同,只是在行内显示。不能使用 {{rev begin}} 或 {{rev end}} 。可以id 引用其文本。
如果既不提供起始标准 也不提供截止标准,那么就只会单独展示文本

如果 noborder 参数是 true,那么忽略表格线。


{{rel|table }} - 允许表格的首行与 @@ 一族生成的标签对齐。

维基文本 效果
@1@ 第一项
@2@ {{rrev|since=c++11|第二项}}
1) 第一项
2)

第二项

(C++11 起)
@1@ 第一项
@2@ {{rel|{{rrev|since=c++11|第二项}}}}
 
1) 第一项
2)

第二项

(C++11 起)

[编辑]导航栏

[编辑] [{{purge}}]文档
 {{navbar | style = | heading1 = | content1 = | heading2 = | content2 = | heading3 = | content3 = ... | heading8 = | content8 = }} 

[编辑]杂项

[编辑]空格

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

[编辑]处理空格字符

{{space|数字 }} ——输出数字 个空格符。注意,与 {{nbsp}}/{{nbspt}} 族的“空白”不同,开头和末尾处的空格字符可以用 {{trim}} 修建掉。

{{space as|文本 }} ——输出与文本 中的字符数等量的空格符。适用于模板化代码的目的。

{{trim|文本 }} ——修剪前导和尾随的空白符

{{sep}} ——在字符间插入微小的不间断空格以避免重叠,比如斜体字符。例如:II; 与 I I。

{{nbsp|数字 (可选)}} ——生成数字 个不间断空格字符(HTML:&nbsp;)。没有参数是插入一个这种空格字符。(开头或末尾处的)这种“空格”不能用 {{trim}} 修建掉。

{{nbspt|数字 (可选)}} ——与 {{nbsp}} 一样生成空格字符,但是具有等宽teletype)字体。这种“空格”不能用 {{trim}} 修建掉。

{{void}} ——如同插入空的空格,有时需要它阻止 wiki-media 预处理器生成 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

[编辑]工具模板(有意地仅为其他模板所用)

[编辑]转型要求

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

这是用于说明某个类型必须能转换到另一类型的模板之一。所有这些模板均能发布两种要求之一:必须能转换一个特定类型的对象到另一类型,或必须能解引用一个特定类型的对象,然后将它转换到另一类型。此行为依靠提供的参数( t 意味着普通类型, p ——必须首先解引用的类型)。

{{cast rreq| 基本类型 | rt=类型 rp=指针类型 }} —— 基本类型 必须能转换到 rt*rp

{{cast req1| 基本类型 | t1=类型 p1=指针类型 }} —— t1*p1 必须能转换到 基本类型

{{cast req2| 基本类型1 | 基本类型2 | t1=type p1=指针类型 | t2=类型 p2=指针类型(可选)}} —— t1*p1 必须能转换到 base_type1t2*p2 必须能转换到 基本类型2。若 t2p2 均未被提供,则假设 t1*p1 必须能转换到 基本类型1基本类型2 两者。

close