2012-12-02 4 views
0

Comment faire une spécialisation pour une fonction de modèle avec un modèle de valeur de retour?Spécialisation de fonction de modèle

J'ai essayé ceci:

myfunc.h:

#pragma once 

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

main.cpp:

#include "myfunc.h" 

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

mais j'ai erreur: attendu avant initialiseur '<' jeton

+0

poste exemple complet –

+0

Err ...... quoi? –

+0

Ajout du code complet –

Répondre

4

Il vous manque le modèle principal avant de déclarer votre spécialisation.

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

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

S'il vous plaît être conscient des problèmes de function specializations.

+0

Type de retour manquant ... !!! –

+0

@CodingMash Merci. Fixé. – pmr

2

Vous n'avez pas déclaré ou défini un modèle principal dont il s'agit d'une spécialisation.

0

Je ne sais pas ce que vous essayez de faire, mais peut-être que cela vous aide:

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