• [^] # Re: C++ : RAII et programmation générique

    Posté par (site web personnel) . En réponse à la dépêche Sortie de GCC 4.3. Évalué à -1.

    C'est quoi l'objectif final de toute ces bidouilles, avoir de la généricité tout en gardant une vérification de type ?

    Imagine, tu est dans l'objet Collection<E>
    Tu veux faire une méthode d'intersection qui te permet de prendre une collection<F> en argument
    et de rendre une autre Collection<E> qui soit l'intersection de E et F selon une fonction de comparaison
    f(E,F) -> boolean |-> E == F; que tu vas lui donner en paramètre.
    Par exemple, je sais pas, un exemple débile : F est un type date, E est un type String dont le contenu contient toujours un numéro d'année.
    Tu veux la liste des string qui contiennent le numéro d'année (par exemple "2008") qui soit le même que la collection de date que tu lui donne en argument.
    ça te permet de faire
    Collection<E> list1,result;
    Collection<F> list2;

    result = list1.intersection(& F autreliste, * pointeurCradeSurFonctionDeComparaisonMaisAvecUnLangagePourriCommeC++TasPasLeChoix);

    Evidemment, sans type Block comme en Smalltalk/Ruby/IO/Lisaac, t'es obligé de passer par un pointeur de fonction, mais voilà la puissance est là :
    Quand tu écris la fonction d'intersection, tu connais pas E, tu connais pas F, et ça marche dans tout les cas (pas en C++ parce que si ta fonction fait n'importe quoi... ça plante, et le compilateur vérifie pas)

    loufoque nous donnera surement une bidouille pour contourner ça proprement !

    « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker