2011-09-25 94 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; 
}