Alexander Krivitskiy
Вспомнил тут один интересный баг, с которым неделю возился. В файлах А и Б есть одинаковые inline функции GetPort(); они обе возвращают разные порты. Эти файлы оба косвенно инклудятся в файл C, где GetPort() вызывается. В результате вызывался GetPort из А, а рассчитывали на из Б. Уважаемые читатели стандарта, почему это скомпилилось, а не бросило ambiguous ошибку?
Потому что у тебя в коде UB. Нарушил one definition rule. Если у тебя в коде UB то "произойдет непонятно что", а не "компилятор кинет ошибку".