名稱空間
變體
操作

幫助:模板

來自 cppreference.com

本頁面描述了此維基中使用的模板。

模板提供實現以下目標的手段:

  1. 質量。修改內容和糾正錯誤變得容易。重複的內容只需編輯一次。
  2. 一致性。模板使“正確做事的方式”變得隱含。
  3. 可用性。高階格式化透過模板變得簡單。

此維基中有很多模板。所有模板的列表可在Special:AllPages找到。由於此維基使用 Mediawiki CMS,因此維基百科專案中存在的所有模板都可以在此處使用。此外,模板文件可用於學習 Mediawiki 模板語法。

目錄

[編輯] 列表

列表模板家族

  • dsc ****:用於建立成員變數/函式列表。
  • dcl ****:用於建立詳細宣告列表(包括實際宣告程式碼的那些)。
  • sdsc ****:用於建立表示語言特性各種語法的列表。用於cpp/language的子頁面。
  • par ****:用於建立解釋函式引數的列表。
  • spar ****:用於建立解釋語法引數的列表。
  • nv ****:用於在導航欄中建立特性列表。
  • elink ****:用於建立“外部連結”列表。

[編輯] 排版助手模板

[編輯] [{{清除}}] 文件

這是用於輸出特殊符號的模板之一

{{!}} - 輸出|

{{!!}} - 輸出||

{{=}} - 輸出=

{{==}} - 輸出==

{{!=}} - 輸出|=

{{(!}} - 輸出{|

{{!)}} - 輸出|}

[編輯] 格式化

[編輯] [{{清除}}] 文件

為封閉文字新增格式

用法 描述 結果 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>

文字

[編輯] 語法高亮

[編輯] [{{清除}}] 文件

這些是用於語法高亮的模板。


{{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|行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=語言 (可選)}}

與{{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("Hello, C++\n");
  }
  }}
  
結果為
int main()
{
    __builtin_printf("Hello, C++\n");
}


{{eq fun|程式碼1 |程式碼2 (可選)|... |程式碼4 (可選)|lang=語言 (可選)}}

一個基礎模板,用於在可能的實現部分中表示程式碼片段。引數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|程式碼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++

[編輯] 連結與錨點

[編輯] [{{清除}}] 文件

這些是用於建立 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 (可選)}} - 使用絕對路徑建立指向頁面的連結。標題由路徑的最後兩部分組成,中間插入::。每個部分都可以透過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|頁面 |標題1 (可選)|標題2 (可選)|args=引數 (可選)|suffix=字尾 (可選)}} - 使用絕對路徑建立指向頁面的連結。標題由路徑的最後兩部分組成,中間插入::。每個部分都可以透過title1title2覆蓋。附加表示函式的括號,其中包含可選的引數,後跟可選的字尾

示例:{{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 連結)。

示例:{{ttt|this_page}} 結果為 this_page

[編輯] 斜體等寬字型

{{rli|頁面 |標題 (可選)}} - 建立一個相對於本頁面的連結(即子頁面)。

{{rlpi|頁面 |標題 (可選)}} - 建立一個相對於父頁面的連結。

{{rlpi|/ |標題 }} - 建立一個指向父頁面的連結。

{{rlpsi|頁面#章節 }} - 建立一個指向相對於父頁面的頁面上的章節(錨點)的連結。生成連結的標題是章節名稱。

[編輯] 裝飾連結

{{attr|屬性 |標題 (可選)|附加標題 (可選)|lang=語言 (可選)}}

用於建立指向 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")]]

[編輯] 標準化連結和資訊

[編輯] [{{清除快取}}] 文件

[編輯] WG21

生成指向 C++ 工作組 (WG21) 文件的連結,分別是 CWG/LWG 頁面或“提案”檔案。

{{wg21|CWG 或 LWG 或 WG21 文件編號 |full (可選)}}

full (可選) 引數僅適用於“提案”文件,應用它將生成一個指向 GitHub 頁面的附加連結(WG21 在 GitHub 上處理提案)。

[編輯] stddoc

用於生成指向 WG14/WG21 文件的連結。

WG/語言(C 或 C++)由 {{get lang}} 確定,除非提供了帶有值 ccpplang (可選) 引數(如果支援)。

{{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}} 結果為
P0202R3
P0879R0
LWG3256
LWG3792
  • 示例:{{stddocs|P0202R3, P0879R0, LWG3256, LWG3792|,}} 結果為
P0202R3
P0879R0
LWG3256
LWG3792
  • 示例:{{stddocs|P0202R3/P0879R0/LWG3256/LWG3792|/|—}} 結果為
P0202R3P0879R0LWG3256LWG3792

[編輯] 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}} 結果為 n5001

{{stdinfo latest draft|doc|lang=c}} 結果為 n3467

date 文件日期 {{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。

{{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++”。

[編輯] POSIX

{{posix|頁面 (可選)|等寬標題 (可選)|任意標題 (可選)}}

生成指向 POSIX 函式文件頁面的連結。此模板內部使用 {{posix/core}}(見下文)。
  • 如果沒有提供引數,則會生成指向文件根目錄的連結,標題為 POSIX 版本。
  • page - 不帶 .html 副檔名的頁面名稱(將附加)。如果未提供其他引數,它也用作等寬字型標題。
  • mono-text - 如果提供,將用作等寬字型標題。
  • any-title - 如果提供,將按原樣用作標題。此引數優先於 mono-text,即如果提供,則忽略 mono-text
[編輯] 示例

{{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

[編輯] 註解

[編輯] {{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)

[編輯] {{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,則該表將成為一個“可排序”的維基表格。

注意:以前,支援兩個額外的(可選)引數:stdcomment(兩者現在都被忽略),用於有條件地新增/隱藏列。StdValueFeature始終存在


{{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

示例


{{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 個空格字元。請注意,在開頭/結尾位置,這些空格字元可能會被 {{trim}} 截斷,這與來自 {{nbsp}}/{{nbspt}} 家族的“空格”不同。

{{space as|text}} - 輸出與 text 中字元數量相同的空格字元。對於模板化程式碼的縮排很有用。

{{trim|text}} - 移除開頭和結尾的空白字元

{{sep}} - 在字元之間插入一個微小的非斷行空格,以避免例如斜體字元重疊。示例:II 對比 I I。

{{nbsp|number (可選)}} - 插入 number 個不換行空格字元(HTML:&nbsp;)。不帶引數時插入一個這種空格。這些“空格”(在開頭/結尾位置)不會被 {{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

[編輯] 標頭檔案

[編輯] [{{清除快取}}] 文件

用於建立指向 C 或 C++ 標頭檔案描述頁面的連結。

{{header|name|lang=cpp or c (可選)}},其中 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|容器|if-true|if-false (可選)}}:

  • 如果容器是給定容器/介面卡組中的一個,則結果為if-true
  • 否則,結果為if-false(如果存在)。
TERM 組中的容器/介面卡
if seq(如果為序列容器)
  • array, inplace_vector, vector, hive, 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(如果為C++98容器)
  • vector, list, set, multiset, map, multimap
  • stack, queue, priority_queue
if c++11(如果為C++11容器)
  • array, forward_list
  • unordered_set, unordered_multiset, unordered_map, unordered_multimap
  • span
  • flat_set, flat_multiset, flat_map, flat_multimap
  • inplace_vector
  • hive

[編輯] 示例

{{cpp/container/if set|multiset|Yes|No}} 結果為 Yes。

{{cpp/container/if seq|multiset|Yes|No}} 結果為 No。