Répondre

3

A partir du standard (projet de travail, Souligné par l'auteur):

Un pointeur de fonction peut être converti explicitement à un pointeur de fonction d'un type différent. [Note: L'effet d'appeler une fonction via un pointeur sur un type de fonction ([dcl.fct]) qui n'est pas le même que celui utilisé dans la définition de la fonction est indéfini. - Note de fin] [...]

Et, bien sûr, void(int const *) et void(int *) sont différents types.

Quelque chose de similaire vient d'un des plus connus online reference (Souligné par l'auteur):

Tout pointeur vers la fonction peut être converti en un pointeur vers un type de fonction différente. L'appel de la fonction via un pointeur vers un type de fonction différent est indéfini, mais la conversion de ce pointeur en pointeur vers le type de fonction d'origine renvoie le pointeur vers la fonction d'origine.

Dans votre cas spécifique, cela n'a pas beaucoup d'importance car vous affectez nullptr au pointeur de fonction. L'invoquer conduirait à une erreur dans tous les cas. Ceci étant dit, si vous aviez assigné un pointeur de fonction valide à pFunc_pcInt, l'invoquer via le pointeur converti pFunc_pInt aurait été un UB.

+0

Je pensais à quelque chose comme exception, qui est caché quelque part dans un paragraphe extrêmement indépendant, mais, semble, ce n'est pas le cas. –

+0

@GreenTree: De nombreux compilateurs C, en particulier ceux destinés à la programmation embarquée ou systémique, documentent explicitement les conventions d'appel de manière à définir implicitement les comportements dans les cas où le code appelant est paramétré comme le requiert la fonction appelée. En raison de la gestion des noms et d'autres problèmes, les conventions d'appel sont plus susceptibles d'être non spécifiées en C++ sauf lorsque les fonctions et les pointeurs sont déclarés comme "extern" C "{...}'. – supercat

+0

@supercat, que voulez-vous dire exactement "les conventions d'appel sont plus susceptibles d'être non spécifiées en C++". et comment les conventions d'appel se rapportent-elles au mangling de noms? –