Anything related to C++ One Definition Rule (ODR), i.e. a rule of the C++ standard banning multiple definitions of most language entities. The ODR roughly mandates that most language entities (objects, functions, templates, etc.) must have a unique (non-duplicated) definition in the same translation unit or across the entire program, while multiple declarations are still possible.
The One Definition Rule (ODR) is the concept that there is at most one defined instance of a function or object allowed in a program.
In C, the One Definition Rule is described in C11 Section 6.9 in paragraph 3:
There shall be no more than one external definition for each identifier declared with internal linkage in a translation unit. Moreover, if an identifier declared with internal linkage is used in an expression (other than as a part of the operand of a
sizeof
or_Alignof
operator whose result is an integer constant), there shall be exactly one external definition for the identifier in the translation unit.
In C++, the One Definition Rule is explained in C++11 Section 3.2 [basic.def.odr], but succinctly summarized in the first paragraph:
No translation unit shall contain more than one definition of any variable, function, class type, enumeration type, or template.
Inlined functions have their own exception clauses. Extensions to the C language relax the one definition rule strictness by permitting multiple definitions if their declarations are all compatible.