考慮到類模板,可以使用類型特徵和虛擬啓用程序模板參數爲特定類型的組提供模板特化。我已經asked that earlier。函數模板:具有類型特徵的不同特化
現在,我需要爲函數模板做同樣的事情:也就是說,我有一個模板函數,並希望針對一組類型進行專門化,例如,類X
的子類型的所有類型。我可以用型性狀這樣表達的:
std::enable_if<std::is_base_of<X, T>::value>::type
我想過做這樣說:
template <typename T, typename ENABLE = void>
void foo(){
//Do something
}
template <typename T>
void foo<T,std::enable_if<std::is_base_of<A, T>::value>::type>(){
//Do something different
}
然而,這不起作用,因爲偏特不允許函數模板。那麼怎麼做呢?也許一個默認參數的類型trait類型?但是代碼看起來如何呢?
什麼是你真正使用這個呢?傾向於重載函數而不是專門化他們的模板。希望你的預期用法允許。 –