模板推導中的偏序過程
模板推導中的偏序過程決定了兩個函數模板之間的特化關係。它涉及兩個階段:
第1 階段:轉換
對於每個模板,部分排序過程透過取代所有類型、非類型來建立「轉換後的函數類型” ,以及具有獨特、未使用類型的模板模板參數。
第2 期:比較
轉換後的函數型別以兩種方式比較:
如果其中一個匹配成功而另一個匹配失敗,則匹配成功的模板被認為更專業。如果兩個匹配都不成功,則兩個模板都不是更專業。
範例:
考慮以下兩個函數範本:
template<typename T, typename U> void foo(T, U); // Template 1 template<typename T> void foo(T const*, X<T>); // Template 2
確定哪個範本比較專業,我們:
確定哪個範本比較專業,我們:
轉換後的範本2:void foo(char const* , X
向後配對: void foo(char const*, X
以上是偏序如何決定函數模板之間的專業化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!