这是我的代码:
#include <iostream>
using namespace std;
template< typename T >
T silnia( T w ) {
cout << "not special" << endl;
}
template<>
int silnia<int>( int x ) {
cout << "special" << endl;
}
int main() {
cout << silnia<double>(5) << endl;
cout << silnia<int>(5) << endl;
return 0;
}
这是输出:
not special
nan
special
4712544
有人可以帮助我了解另外两条线的来源吗?
最佳答案
您可能会收到一个编译器警告(至少)告诉您您的模板分别返回了 T
和 int
,但您没有提供任何返回值,即 < strong>未定义的行为。您应该返回函数声明的类型。
template< typename T >
T silnia( T w ) {
cout << "not special" << endl;
return w;
}
template<>
int silnia<int>( int x ) {
cout << "special" << endl;
return x
}
为什么重要?因为你正在使用 std::cout
来尝试输出这些函数调用的返回值。
cout << silnia<double>(5) << endl;
cout << silnia<int>(5) << endl;
关于c++ - 模板特化函数 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30807701/