gpt4 book ai didi

c++ - 模板特化导致 undefined reference 错误

转载 作者:太空狗 更新时间:2023-10-29 20:33:54 30 4
gpt4 key购买 nike

我尝试了像下面这样的模板特化。

#include<iostream>
using namespace std;

template<class T1, class T2>
T1 something(T2 a);

template<class T2>
double something(T2 a){
double b;
return b;
}

int main(){
something<double, double>(0.0);
}

但是,这给了我一个编译错误:

In function `main':
test.cpp:(.text+0x9): undefined reference to `double something<double, double>(double)'

你能告诉我怎么解决吗?

最佳答案

这不是模板特化,而是function template overloading .

第一个重载有两个模板参数,第二个只有一个;当你用两个指定的模板参数调用它时,比如 something<double, double>(0.0); ,第一个将在重载决议中被选中;但它没有定义然后导致链接错误。


顺便说一句:函数模板只能是 full specialized , 他们不可能是 partial specialized .在大多数情况下 function template overloading会很好地完成这项工作。

关于c++ - 模板特化导致 undefined reference 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52216156/

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