我有一个模板化函数,它也专门用于内置类型(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;
}