当前位置:  开发笔记 > 编程语言 > 正文

由于未知的模板定义,模板特化失败

如何解决《由于未知的模板定义,模板特化失败》经验,为你挑选了2个好方法。



1> 101010..:

专业化的返回类型和主模板必须匹配:

template
float hz_to_nsec(const T &freq) {
    return freq != 0 ? static_cast(NSEC_PER_SEC) / freq : 0;
}

template <>
float hz_to_nsec(const double &freq) {
^^^^^
    return freq != 0 ? static_cast(NSEC_PER_SEC) / freq : 0;
                                   ^^^^^
}

或者,您可以提供重载而不是模板特化:

template
float hz_to_nsec(const T &freq) {
    return freq != 0 ? static_cast(NSEC_PER_SEC) / freq : 0;
}

double hz_to_nsec(const double &freq) {
    return freq != 0 ? static_cast(NSEC_PER_SEC) / freq : 0;
}



2> R Sahu..:

@ 101010的答案解决了您的模板错误.但是,您不需要第二个函数作为模板特化.它可能只是一个过载.

// template <>
// No need to use template specialization.
// Just use an overload.
double hz_to_nsec(double freq) {
    return freq != 0 ? static_cast(NSEC_PER_SEC) / freq : 0;
}

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有