Una regla de definición en c ++
De acuerdo con el estándar c ++:
Ninguna unidad de traducción contendrá más de una definición de variable, función, tipo de clase, tipo de enumeración o plantilla.
//--translation_unit.cpp--//
int a;
void foo()
{
int a; //Second defention of a. ODR fails.
}
¿Me puede explicar cómo funciona ODR en realidad?