erreur C2893: impossible de se spécialiser modèle de fonction

J'obtiens cette erreur et une autre erreur de trop ** "IntelliSense: aucune instance de modèle de fonction correspond à la liste des arguments"** lors de la compilation le code suivant

Je sais qu'il pourrait être logique des erreurs dans ma fonction, mais j'ai besoin pour résoudre cette erreur première à être en mesure de débogage de ma fonction .

#include <iostream>
using namespace std;

template<class T>
T myMax (T& arr ,int arrStart ,int arrSize)
{
    if(arrStart==arrSize-1)
        return arr[arrSize];

    int median = (arrStart+arrSize)/2 ;
    T left , right , maximum ;

    left = max(arr,arrStart , median);
    right = max(arr , median+1 , arrSize-1) ;

    if (left>right)
        maximum = left;
    else
        maximum = right ;

    return maximum ;

}

void main()
{

    int arrSize = 5;
    int arr[] = {1,3,4,6,22};

    int x;
    x = myMax(arr,0,arrSize);

}
  • Certains autres commentaires, en plus de ceux dans les réponses: Le type de retour de main doit être int. arr[arrSize]; est incorrect parce qu'il accède à un élément qui n'existe pas (arr[arrSize] est un passé la fin du tableau). Puisque la fonction ne modifie pas arr, si vous choisissez de prendre le tableau par référence, il doit être une référence const.
InformationsquelleAutor Ahmed | 2011-04-20