Если они не считают себя «частью реализации», то есть стандартными библиотеками, им не следует этого делать.
Правила довольно конкретны и немного более подробны, чем предлагают некоторые другие.
Все идентификаторы, содержащие двойное подчеркивание или начинающиеся с подчеркивания, за которым следует заглавная буква, зарезервированы для использования реализации во всех областях, т.е. они могут использоваться для макросов.
Кроме того, все другие идентификаторы, начинающиеся с подчеркивания (т. Е. Не сопровождаемые другим подчеркиванием или прописной буквой), зарезервированы для реализации в глобальной области. Это означает, что вы можете использовать эти идентификаторы в своих собственных пространствах имен или в определениях классов.
Вот почему Microsoft использует имена функций с начальным подчеркиванием и все в нижнем регистре для многих своих основных функций библиотеки времени выполнения, которые не являются частью стандарта C ++. Гарантируется, что эти имена функций не будут конфликтовать ни со стандартными функциями C ++, ни с функциями пользовательского кода.