O ile nie czują, że są „częścią implementacji”, czyli standardowymi bibliotekami, to nie powinni.
Zasady są dość szczegółowe i nieco bardziej szczegółowe niż sugerowały to niektóre inne.
Wszystkie identyfikatory, które zawierają podwójne podkreślenie lub rozpoczynają się od podkreślenia, po którym następuje duża litera, są zarezerwowane do użytku implementacji we wszystkich zakresach, tj. Mogą być używane dla makr.
Ponadto wszystkie inne identyfikatory zaczynające się od podkreślenia (tj. Po którym nie następuje inny podkreślenie ani duża litera) są zarezerwowane do implementacji w zakresie globalnym. Oznacza to, że możesz używać tych identyfikatorów we własnych przestrzeniach nazw lub w definicjach klas.
Dlatego firma Microsoft używa nazw funkcji z początkowym podkreśleniem i małymi literami w wielu podstawowych funkcjach biblioteki wykonawczej, które nie są częścią standardu C ++. Te nazwy funkcji na pewno nie kolidują ze standardowymi funkcjami C ++ ani funkcjami kodu użytkownika.