首頁 >後端開發 >C++ >為什麼在 C 中使用預設模板參數時仍然需要指定模板參數?

為什麼在 C 中使用預設模板參數時仍然需要指定模板參數?

Patricia Arquette
Patricia Arquette原創
2024-11-04 17:21:01339瀏覽

Why Do I Still Need to Specify Template Arguments When Using Default Template Arguments in C  ?

理解C 中預設模板參數的使用

問題:

儘管能夠定義如下類模板預設參數,如以下類別模板參數所示:

<code class="cpp">template <typename T = int>
class Foo {
};</code>

為什麼有必要在下面的例子中實例化類別時指定模板參數?

<code class="cpp">Foo<int> me;</code>

答案:

與問題所暗示的相反,沒有必要明確指定使用預設範本參數定義類別範本時的範本參數。從C 17 開始,以下程式碼有效:

<code class="cpp">Foo me;</code>

但是,在C 17 之前,需要以下語法:

<code class="cpp">Foo<> me;</code>

這意味著模板參數必須是即使它們是空的也存在。此行為類似於使用單一預設參數呼叫函數,其中 foo() 和不帶參數的 foo 都是有效表達式,但只有前者會呼叫該函數。

透過引入預設模板參數,C 11透過提供一種為模板參數設定預設值的方法,可以更輕鬆地使用類別模板。此外,正如 C 11 和 C 17 之間的行為變化所證明的那樣,這種語法隨著時間的推移而不斷發展以提高可用性。

以上是為什麼在 C 中使用預設模板參數時仍然需要指定模板參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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