首頁  >  文章  >  後端開發  >  為什麼 C 不能從預設函數參數推導出模板參數?

為什麼 C 不能從預設函數參數推導出模板參數?

Linda Hamilton
Linda Hamilton原創
2024-11-05 08:07:02267瀏覽

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

從預設函數參數推導出模板參數

編譯器無法從提供的程式碼中的預設函數參數推導出模板參數可歸因於C 語言的規定語言規範。

在C 03 中,正如規範第§14.8.2/17 中所引用的,「模板類型參數不能從函數預設參數的類型推導出來。」此限制明確禁止使用預設參數進行模板參數推導。

雖然 C 11 引入了為函數模板指定預設模板參數的可能性,但預設函數參數仍然無法用於模板參數推導。具體來說,C 11 §14.8.2.5/5 指出「非推導上下文是:...函數參數的參數類型中使用的模板參數,該函數參數具有預設參數,該參數在呼叫哪個參數時使用推導正在進行中。要解決此問題,在呼叫 bar 函數時必須提供明確模板參數,如以下修改後的程式碼所示:

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn