No właśnie takich, bardzo subtelnych, ...
Które mogą nawet nie wystąpić.
Które mogą zależeć od tego co programujesz [i projektujesz], tzn chcesz wykorzystać swoją klasę ale nieopacznie nazwałeś ją dokładnie tak samo, jak klasa istniejąca w bibliotece, z której korzystasz. I teraz pytanie, co kopilator wstawi do twojego kodu? Jak bardzo różnią są te obie klasy, bo jeżeli działają identycznie, to możliwe, że nawet nie będzie aż tak dużego problemu.
Czyli jedyny problem z zasadą ODR jest taki, że kompilator nie ostrzega przed przypadkiem nieprzestrzegania tej zasady przez programistę [kodera]. A więc trzeba samemu pilnować i przestrzegać tej zasady - nie używać tekiej samej nazwy do nazywania dwóch różnych rzeczy [dwóch różnych-podobnych, klas].
Niesteety ani nikt, ani nic nie jest doskonałe [kompilatory też].
PS
Co do działu, mógłby być jakiś lepszy, ale jak widać, "nasi" admini też są bardzo niedoskonali. Można ich przyciskać i prosić o dodanie innych działów, pisząc na contact@spoj.com bo tutaj wygląda, że nie zaglądają, czemu się wcale nie dziwię.