2012-12-02 3 views
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; 
} 

하지만 난 오류가 있습니다 '<'토큰

+0

후 완전한 예를 –

+0

잘못 ...... 뭐? –

+0

전체 코드가 추가되었습니다 –

답변

4

전에 예상 이니셜 라이저 전문화를 선언하기 전에 기본 템플릿이 누락되었습니다.

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

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

function specializations의 문제에 유의하십시오.

+0

누락 된 반환 유형 ... !!! –

+0

@CodingMash 감사합니다. 결정된. – pmr

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