2
編譯哪個專門的模板我有一個模板函數,它也專門用於內置類型(int,float)。有沒有辦法顯示編譯器正在使用哪些函數以及哪些函數正在修剪,在編譯時 ??也許使用#pragma ??如何檢查在
template<typename T>
int func(T val)
{
...
}
template<>
int func<float>(float val)
{
...
}
// etc
編譯哪個專門的模板我有一個模板函數,它也專門用於內置類型(int,float)。有沒有辦法顯示編譯器正在使用哪些函數以及哪些函數正在修剪,在編譯時 ??也許使用#pragma ??如何檢查在
template<typename T>
int func(T val)
{
...
}
template<>
int func<float>(float val)
{
...
}
// etc
你最好的選擇是見好就收所有的未定義的功能,看看編譯器會引發你什麼錯誤時,它會嘗試實例化模板功能。如果您需要多次執行此操作,可能在該代碼周圍設置#ifdef將允許「轉儲使用的函數」版本。從那裏它將是一個簡單的shell腳本或從編譯器的錯誤日誌中提取實例化函數的類型的東西。
或者,你可能添加基於模板參數編譯錯誤:
template<typename T>
int func(T val)
{
T::this_version_is_being_included;
}
編譯看到最容易的事情中是「編譯器錯誤」 –