• [^] # Re: extern "C", pointer to member function,

    Posté par (site web personnel) . En réponse au journal Conversion entre pointeurs de fonctions incompatibles. Évalué à 2.

    Une autre source de undefined behaviour est quand on a des pointeur extern "C"

    Par exemple:

    extern "C" int my_function(int); // Une fonction d'une bibliothèque C

    int foo() {
    int (*f)(int) = my_function; // Compile sans warnings
    f(42); // undefined behaviour

    // undefined behaviour dans function_cast::operator()
    return apply(my_function);
    }

    Peux tu détailler l'origine de ce comportement indéfini ? Je pensais que extern "C" changeait juste le name mangling, ça changerait aussi la convention d'appel?