gpt4 book ai didi

c++ - 如何检查在哪个专用模板中编译

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:34:19 29 4
gpt4 key购买 nike

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

关于c++ - 如何检查在哪个专用模板中编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7543493/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com