A moins qu'ils ne sentent qu'ils font "partie de la mise en œuvre", c'est-à-dire les bibliothèques standard, alors ils ne devraient pas le faire.
Les règles sont assez spécifiques et légèrement plus détaillées que d'autres ne l'ont suggéré. Tous les identificateurs qui contiennent un trait de soulignement double ou un début avec un trait de soulignement suivi d'une lettre majuscule sont réservés pour l'utilisation de l'implémentation à toutes les étendues, c'est-à-dire qu'ils peuvent être utilisés pour les macros. En outre, tous les autres identifiants qui commencent par un trait de soulignement (c'est-à-dire qui ne sont pas suivis d'un autre trait de soulignement ou d'une lettre majuscule) sont réservés pour l'implémentation à l'échelle globale. Cela signifie que vous pouvez utiliser ces identifiants dans vos propres espaces de noms ou dans les définitions de classe. C'est pourquoi Microsoft utilise des noms de fonctions avec un trait de soulignement principal et tout en minuscules pour plusieurs de leurs fonctions de bibliothèque d'exécution principales qui ne font pas partie de la norme C++. Ces noms de fonctions sont garantis de ne pas entrer en conflit avec les fonctions C++ standard ou les fonctions de code utilisateur.
Pourquoi difficile à lire? Il est conçu principalement comme un délimiteur, tout comme les citations.Si je me souviens, il est principalement utilisé pour les constantes intégrées. –