首頁 > 後端開發 > C++ > 主體

## C 17 能否實作部分類別模板參數推導?

Linda Hamilton
發布: 2024-10-25 06:20:28
原創
258 人瀏覽過

## Can C  17 Achieve Partial Class Template Argument Deduction?

C 17 中的部分類別模板參數推導

在C 17 中,類別模板參數推導(CTAD) 允許根據傳遞給a 的參數來推導模板參數函數或構造函數。但是,此過程目前需要指定所有參數或不指定任何參數。

如果可以部分指定範本參數並推導其餘參數,則會出現問題。例如:

<code class="cpp">Base<V = bool> val1(1, 4.);        // U & V deduced --> Base<int, double, bool>
Base<T = bool, T =int> val2(5.);  // V deduced     --> Base<bool, int, double></code>
登入後複製

但是,嘗試使用別名範本來實現此目的,例如:

<code class="cpp">template<class T, class U> using Base2 = Base<T, U, double>;

void func() {
    NewBase2 val(1, 2);
}</code>
登入後複製

會導致編譯錯誤。

目前,CTAD不支援部分扣除。提出這個特性的論文P1021R0尚未被接受。但是,C 20 可能包括對別名範本 (P1814) 和聚合 (P1816) 的支持,這可以提供解決方法。

以上是## C 17 能否實作部分類別模板參數推導?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!