Dans une déclaration de fonction, les arguments de type tableau de désintégration dans des pointeurs vers le premier élément, les arguments de la fonction du type de désintégration dans un pointeur de fonction, de sorte que la signature serait:
widget w( gadget(*)(), doodad(*)() );
C'est une fonction qui prend comme premier argument un pointeur vers une fonction prenant aucun argument et retournant gadget
, qui prend comme deuxième argument un pointeur vers une fonction prenant aucun argument et retournant un doodad
et que la fonction elle-même renvoie à un widget
Il y a encore plus intéressant ou de confusion cas, comme:
// assume 'x' is a variable defined somewhere:
widget w(gadget(x));
Comment pouvait qu' être interprété comme une déclaration de fonction? Je veux dire, x
est une variable, non? Ainsi, lorsque l'on déclare une variable, vous pouvez ajouter de la parenthèse, donc, gadget x;
et gadget (x);
déclarer la même variable x
. Le même s'applique à des arguments de la fonction, donc le code ci-dessus ressemble à une déclaration d'une fonction qui prend un premier argument nommé x
de type gadget
et renvoie un widget
...