簡體   English   中英

帶類的默認模板參數

[英]Default template parameter with class

我剛剛發現了一個關於默認模板參數的奇怪語法

template<class T = class Z>
struct X
  {};

第二個“class”關鍵字在這種情況下意味着什么?

真的沒什么特別的。 C ++允許您通過詳細的類型說明符引用類。 例如

void foo(class bar*);

這聲明了一個函數foo ,它接受bar*類型的參數。 如果之前沒有聲明bar ,那么這個精巧的類型說明符構成了包含foo的命名空間中的bar聲明。 就好像你寫過:

class bar;
void foo(bar*);

回到您的示例, X是一個類模板,需要單個類型參數,由class T表示,但可以表示為與typename T相同。 所述類型參數具有默認參數,由詳細的類說明符class Z命名。 該聲明可以像上面的函數一樣重寫:

class Z;
template<class T = Z>
struct X
  {};

暫無
暫無

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

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