如何检查编译的专用模板

时间:2011-09-25 03:41:01

标签: c++ templates visual-c++ pragma

我有一个模板化函数,它也专门用于内置类型(int,float)。有没有办法显示正在使用哪些函数以及哪些函数正在被编译器修剪,在编译时?也许使用#pragma ??

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

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

// etc

1 个答案:

答案 0 :(得分:1)

您最好的选择是保持所有函数未定义,并查看编译器在尝试实例化模板函数时向您抛出的错误。如果您需要多次执行此操作,可能围绕该代码设置#ifdef将允许“转储已使用的函数”构建。从那里开始,它将是一个简单的shell脚本,或者用于提取从编译器的错误日志中实例化的函数类型。

或者,您可能会根据模板参数添加编译错误:

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