為什麼現在禁止 C 20 類別模板建構函式中的冗餘模板參數清單?
Nov 28, 2024 am 02:10 AM在C 20 中刪除類別模板建構子中的冗餘模板參數清單
在C 17 中,類別模板建構子可以具有冗餘模板參數清單。例如:
template<typename T> struct S { S<T>(); };
登入後複製
但是,在 C 20 中,情況不再如此。最近的一項變更要求類別範本的所有建構函式都必須使用注入的類別名,這消除了宣告符中的冗餘。
此更改記錄在C 20 草案的兼容性部分中:
[diff.cpp17.class] **Affected subclauses**: [class.ctor] and [class.dtor] **Change**: A simple-template-id is no longer valid as the declarator-id of a constructor or destructor. **Rationale**: Remove potentially error-prone option for redundancy. **Effect on original feature**: Valid C++ 2017 code may fail to compile in this International Standard.
登入後複製
具體來說,構造函數聲明符中的id 表達式現在必須採用以下之一形式:
- 在類別的非友元成員規範中的成員宣告中,封閉類別的注入類別名稱。
- 在非友元成員規範中的成員宣告中-friend 類別模板的成員規範,命名封閉類別模板的目前實例的類別名稱。
因此,正確的建構子宣告C 20 簡單來說就是:
template<typename T> struct S { S(); };
登入後複製
以上是為什麼現在禁止 C 20 類別模板建構函式中的冗餘模板參數清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林
兩個點博物館:所有展覽以及在哪裡可以找到它們
3 週前
By 尊渡假赌尊渡假赌尊渡假赌

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林
兩個點博物館:所有展覽以及在哪裡可以找到它們
3 週前
By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)