В каких-нибудь компиляторах реализованы предупреждения о возможных ошибках в написании похожих имен?
Классический пример — "#ifdef MyMacro". Если вместо "MyMacro" будет "myMacro" или "Mymacro" — оно будет тихо пропущено, как и при любых других ошибках в имени (определено MYMACRO, проверяется MYMACR), и замаешься искать такие ошибки. У себя я уже давно использую только #if, никаких #ifdef/#ifndef.
Такая же фигня с перегруженными функциями, шаблонной магией и подобными вещами.
Так же визуально трудно отличить, например, "l" от "1". Такой ляп, конечно, допустить нелегко, но таки можно.
А если компилятор поддерживает Unicode, то и вовсе открывается широчайший простор для косяков — многие буквы с разными кодами совершенно неотличимы визуально.
Сейчас прогнал с /Wall свежий VC++ 19.29 из последнего обновления VS 2019 — его такие сочетания совершенно не напрягают.