為什麼編譯器不能從預設函數參數推導出模板類型參數?
儘管看似邏輯假設,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中文網其他相關文章!