A situation in which two or more identifiers within a given scope cannot be unambiguously resolved.
Programmers are expected to ensure that the identifiers of entities are unique in a given scope and not open to multiple interpretations. When this is not ensured, a name-conflict (or a name-collision) occurs.
Different compilers have different rules for resolving name conflict, which is captured by name-mangling (also known as name decoration).