[英]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.