2011-09-25 21 views
2

編譯哪個專門的模板我有一個模板函數,它也專門用於內置類型(int,float)。有沒有辦法顯示編譯器正在使用哪些函數以及哪些函數正在修剪,在編譯時 ??也許使用#pragma ??如何檢查在

template<typename T> 
int func(T val) 
{ 
... 
} 

template<> 
int func<float>(float val) 
{ 
... 
} 

// etc 
+0

編譯看到最容易的事情中是「編譯器錯誤」 –

回答

1

你最好的選擇是見好就收所有的未定義的功能,看看編譯器會引發你什麼錯誤時,它會嘗試實例化模板功能。如果您需要多次執行此操作,可能在該代碼周圍設置#ifdef將允許「轉儲使用的函數」版本。從那裏它將是一個簡單的shell腳本或從編譯器的錯誤日誌中提取實例化函數的類型的東西。

或者,你可能添加基於模板參數編譯錯誤:

template<typename T> 
int func(T val) 
{ 
    T::this_version_is_being_included; 
}