模板功能专业化

时间:2012-12-02 11:31:01

标签: c++ templates

如何使用返回值模板对模板函数进行专门化?

我试过了:

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;'之前的预期初始化程序令牌

3 个答案:

答案 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;
}