• [^] # Re: std::function

    Posté par (site web personnel) . En réponse au journal Conversion entre pointeurs de fonctions incompatibles. Évalué à 2. Dernière modification le 08 novembre 2018 à 14:34.

    Je ne comprends pas ton problème. Ton contrat c'est de prendre des fonctions qui prennent deux entiers en paramètre. Sauf qu'on t'envoie une fonction qui en prend que un. C'est contraire au contrat indiqué. C'est à l'appelant de se modifier.

    Sinon, c'est tout à fait possible avec std::function et une lambda (avec std::bind peut-être)

    int strange_apply(int (*beurk)(int))
    {
     std::function<int(int, int)> f = [beurk] (int x, int) -> int {
     return beurk(x);
     };
     f(123, 456);
    }

    Note que le std::function n'est nécessaire que si tu souhaite stocker beurk pour l'appeler plus tard.

    AI is a mental disorder