ODR
A regra de que cada coisa só pode ser definida uma vez no programa, e de que tudo o que puder ser definido mais de uma vez precisa ser definido de forma idêntica em todo lugar.
Uma classe ou uma função inline pode aparecer em várias unidades de tradução, mas todas as definições precisam ter os mesmos tokens e significar a mesma coisa. A parte desagradável está no texto do padrão: violações são ill-formed, no diagnostic required. O compilador vê um arquivo por vez e o linker só enxerga nomes decorados; então, quando dois arquivos definem a mesma classe de forma diferente — tipicamente porque um #define ou um pragma de empacotamento diferia entre duas bibliotecas —, o linker escolhe uma em silêncio e descarta a outra. O resultado é um programa que funciona até alguém mudar a ordem de linkagem. Existem ferramentas: o ASan tem uma verificação para isso, assim como o lld e o gold.