Les quatre opérateurs mentionnés dans le message original, =
, ()
, ->
et []
, doivent en effet être mis en oeuvre en tant que fonctions membres non statiques (par respectivement 98 §13.5.3/1 C++, §13.5.4/1, §13.5.5/1 et §13.5.6/1). Si je me souviens bien des précédents débats sur le sujet, Bjarne Stroustrup a eu raison de garder une certaine lucidité dans la langue, c'est-à-dire d'avoir au moins des choses sur lesquelles on peut compter, quel que soit le problème. opérateurs membres pour les classes existantes.
Je ne suis pas sûr que je suis entièrement d'accord que la restriction aide vraiment à cela, mais. : J'ai consulté Bjarne Stroustrup à ce sujet (il est toujours utile) mais il semble que les incohérences apparentes des règles ne sont rien de plus qu'un accident historique figé. Il note que "Cela semble pire maintenant qu'à l'époque parce que nos règles pour les valeurs et les références ont changé depuis que les règles de surcharge ont été formulées.J'ai essayé de réexaminer cette question il y a quelques années, mais j'ai manqué de temps avant de produire un compléter la proposition. "
Vive & HTH,
PS:. « La conception et l'évolution de C++ » livre est idéal pour ce genre de question, mais malheureusement, je ne l'ai pas.
Je suis assez sûr '-> *' peut être mis en œuvre en fonction non-membre. –
@James: Vous avez raison. @Armen: Probablement juste myopie. – GManNickG
@James. Le livre C++ en un mot dit autrement ... –