Nous avons un code qui ressemble à peu près comme ceci:Résolution de surcharge avec deux énumérations
// Two enums that differ entirely.
enum A { a1, a2 };
enum B { b1, b2 };
// Functions to convert in some meaningful way between them
A convert(B);
B convert(A);
Maintenant, notre compilateur va et fait exactement ce que nous nous attendons à. convert(a1)
appellera B convert(A)
, et ainsi de suite. Cependant, quand nous utilisons Lint pour regarder notre code, il se plaint de l'erreur 31. Nous suspectons que c'est parce que le type intégral sous-jacent des énumérations est le même, et donc Lint pourrait les traiter comme tel.
La question que j'ai est: est le code standard, ou est-ce une utilisation accidentelle d'une fonctionnalité de compilateur?
Addendum, erreur 31 est "tenter de redéfinir une fonction". Je surveille attentivement cette question et j'ajouterai volontiers une réponse à la question qui concerne le standard. –