0
比方說,我們有一個模板功能:我們什麼時候需要顯式實例化一個模板函數?
template <class T> T max(T a, T b) { return a > b ? a : b; }
由於編譯器不執行模板參數推導過程中的任何隱式類型轉換,我們可以通過以下兩種方法調用max(2, 5.5)
:
- 使用鑄造:
max(static_cast<float>(2), 5.5f);
- 使用顯式模板實例:
max<float>(2, 5.5);
第二種情況對我來說很有意義,但是當我們做了明確的模板實例在下面給出(實例而不字符類型調用函數max
):
template char max(char a, char b);
什麼是我們實現退出它?
顯式實例允許提供聲明沒有其他TU定義。 – Jarod42
^- 如果您的模板只能應用於一組有限的類型,這些類型都是事先已知的,這非常有用。 – StoryTeller