如何使用返回值模板对模板函数进行专门化?
我试过了:
myfunc.h:
#pragma once
template< >
int MyFunc<int>(){
return 10;
}
main.cpp中:
#include "myfunc.h"
int main()
{
int a;
a = MyFunc<int>();
return 0;
}
但我有错误:'&lt;'之前的预期初始化程序令牌
答案 0 :(得分:4)
在宣布专业化之前,您缺少主要模板。
template<typename> int func() { return 42; }
template<> int func<int>() { return 23; }
请注意function specializations的问题。
答案 1 :(得分:2)
您没有声明或定义这是一个专业化的主模板。
答案 2 :(得分:0)
我不知道你想做什么但也许这会对你有所帮助:
template<typename T>
int MyFunc(){
return 0;
}
template<>
int MyFunc<int>(){
return 10;
}
template<>
int MyFunc<char>(){
return 100;
}
using namespace std;
int main()
{
cout << MyFunc<int>() << endl << MyFunc<char>() << endl;
system("pause");
return 0;
}