C 20 中類別模板建構子中的冗餘模板參數列表
在C 中,在類別模板中聲明構造函數的語法發生了變化在C 20 中。以前,考慮過以下形式的程式碼格式良好:
template<typename T> struct S { S<T>(); };
儘管
error: expected unqualified-id before ')' token 3 | S<T>(); ^
雖然在GCC10.2 或帶有-std= 的Clang 中不會遇到此錯誤c 20,它源自於C 20 中引入的根本性變化。
根據 C 20 相容性部分,使用作為建構子或析構函數的聲明符 id 的 simple-template-id 不再有效。此舉旨在消除潛在的容易出錯的冗餘。
C 20 的[class.ctor] 部分中的新措詞指定對於類別模板內的成員聲明中的建構函數,應使用注入的類別名稱:
template<typename T> struct S { S(); // Use injected-class-name };
在此範例中,S 表示內部類別模板的注入類別名稱。因此,冗餘的
以上是為什麼 C 20 類別模板建構函式中的冗餘模板參數清單現在會出現錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!