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

為什麼 C 編譯器不能從預設函數參數推導出模板類型參數?

Susan Sarandon
發布: 2024-11-05 07:55:02
原創
441 人瀏覽過

Why Can't C   Compilers Deduce Template Type Parameters from Default Function Arguments?

為什麼編譯器不能從預設函數參數推導出模板類型參數?

儘管看似邏輯假設,C 編譯器無法自動推斷模板預設函數參數的型別參數。由於不同的原因,這在 C 03 和 C 11 中都成立。

在C 03 中,編譯器的無能源於顯式語言規範(第14.8.2/17 節):「模板類型參數不能是從函數預設參數的類型推導出來。」

在C 11 中,雖然可以指定預設模板參數,但必須明確提供。預設函數參數本身仍然無法用於模板參數推導:

<code class="cpp">void bar(int a, T b = 0.0f) { } // C++11</code>
登入後複製

C 11 標準(14.8.2.5/5) 定義了非推導上下文,其中包括:

  • “函數參數的參數類型中使用的模板參數,函數參數具有預設參數,該參數正在執行參數推導的呼叫中使用。參數來避免編譯錯誤。

以上是為什麼 C 編譯器不能從預設函數參數推導出模板類型參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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