0

戻り値テンプレートを使用してテンプレート関数を特殊化するにはどうすればよいですか?

私はこれを試しました:

myfunc.h:

#pragma once

template< >
int MyFunc<int>(){
   return 10;
}

main.cpp:

#include "myfunc.h"

int main()
{
    int a;
    a = MyFunc<int>();
    return 0;
}

しかし、エラーがあります:「<」トークンの前に初期化子が必要です

4

3 に答える 3

4

スペシャライゼーションを宣言する前に、プライマリ テンプレートがありません。

template<typename> int func() { return 42; }

template<> int func<int>() { return 23; }

関数の特殊化の問題に注意してください。

于 2012-12-02T11:42:44.860 に答える
2

これが特殊化されているプラ​​イマリ テンプレートを宣言または定義していません。

于 2012-12-02T11:42:51.103 に答える
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;
}
于 2012-12-02T20:53:19.117 に答える