2014-01-08 65 views
1

鑑於這種功能模板:函數模板專業化語法

template<typename A> void func (A param) {...} 

爲了寫一個專業化,我們可以使用這個成語(A)

template<> void func<> (int param) {...} 

或者這一個(B)

template<> void func<int> (int param) {..} 

A和B之間是否有區別?如果兩者都相同,那麼首選語法是什麼?爲什麼?

+0

這只是模板參數推導。使用你認爲其他人最容易閱讀的內容。 –

回答

3

A.)template<> void func<> (int param) {...}

B.)template<> void func<int> (int param) {..}

有A和B之間有什麼區別?

從技術上講,B具有顯式指定的模板參數,而A具有減少的參數,但對用戶來說,它僅僅是如何呈現您的功能。

如果兩者都相同,那麼首選語法是什麼?爲什麼?

由於定義兩者都會導致多重定義錯誤(即它們是相同的函數),所以它真的取決於您如何呈現函數的個人偏好。

我個人的部分給B,因爲它完全定義和明確規定的功能的意圖,但同樣這是我的個人偏好

希望可以幫助