Un typedef définit un type. Les codes amis déclarent des classes ou des fonctions d'amis (essentiellement des étendues), qui ont alors un "accès" à la zone non publique de la classe déclarante ...
Primitives, par exemple. un float ou un int * ne définissent pas une portée avec un code etc., ils n'utilisent pas la classe de toute façon. N'oubliez pas, vous pouvez également "empaqueter" les conventions d'appel, les attribs d'alignement et d'autres éléments spécifiques au compilateur dans un typedef, c'est-à-dire plusieurs TYPES vectoriels implémentés par la même classe mais avec des attributs d'alignement distincts. => Un type n'est pas une classe, mais vice versa. À mon humble avis, déclarer un ami typedef peut être utile, mais quand "class typedefs" de n'importe où peut être défini comme ami, les amitiés peuvent devenir extrêmement incompréhensible et donc sujettes aux erreurs, en particulier lorsque les modèles sont utilisés excessivement.
L'invalidation d'un seul fichier typedef peut perturber l'ensemble du projet en raison de dépendances étendues. Les amis modèles et les typedefs du modèle 0x sont utiles, mais ne relâchez pas les règles d'une déclaration d'ami.
Je ne connais pas de proposition concernant les typedefs d'amis.
Puisque votre réponse ne fournit aucune information utile, avez-vous pensé à la supprimer? –