Je comprends plus la surcharge des opérateurs, à l'exception des opérateurs d'accès des membres ->, .*, ->*etc.
En particulier, qu'est-ce qui est passé à ces fonctions d'opérateur et que faut-il renvoyer?
Comment la fonction d'opérateur (par exemple operator->(...)) sait-elle à quel membre il fait référence? Peut-il savoir? A-t-il même besoin de savoir?
Enfin, y a-t-il des considérations const à prendre en compte? Par exemple, lorsque vous surchargez quelque chose comme operator[], vous aurez généralement besoin à la fois d'une version const et non const. Les opérateurs d'accès aux membres nécessitent-ils des versions const et non const?
constet les non- constversions de operator->ne sont pas obligatoires , mais fournir les deux peut être utile.
                ->*et .*. En fait, il ne les mentionne même pas! Je pense qu'ils sont trop rares pour être dans une FAQ, mais je serais heureux de lier cette question à la FAQ. Veuillez ne pas fermer cela comme une dupe de la FAQ!