簡體   English   中英

具有非類型模板參數的別名模板

[英]Alias Template with non-type template parameter

我的期望是這段代碼不能被編譯,但它可以。 這段代碼如何工作? 甚至 integer 也不是模板。

template <int>
using A = int;

void f(A<4> foo = 0);

不是這樣過來的嗎?

void f(int<4> foo = 0);

不是這樣過來的嗎?

不。

A是別名模板。 它有一個未命名的未使用的int參數。 無論使用什么參數, A始終是int的別名。 這就是using A = int; 方法。

function 申報基本上就是

void f(int foo = 0);

也許您不熟悉未命名的未使用模板參數。 別名可以等效地寫為:

template <int Value>
using A = int;

由於未使用Value ,因此可以省略其名稱。


也許您對在別名模板中出現兩次的int感到困惑。 第一個int是(未命名未使用的)參數,第二個int是別名類型,兩者無關。

您可以使用int參數將類似的別名寫入 alias double

template <int>
using B = double;

這里任何B<n>都是double的別名。

或者您可以將帶有類型參數的類似別名寫入別名int

template <typename>
using C = int;

這里任何C<T> ,例如C<std::string>C<foo>都是int的別名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM