What is the One-Definition Rule?

c++, definition, language-lawyer, one-definition-rule

Solution

The truth is in the standard (3.2 One definition rule) :

No translation unit shall contain more than one definition of any variable, function, class type, enumeration type or template.

[...]

Every program shall contain exactly one definition of every non-inline function or object that is used in that program; no diagnostic required. The definition can appear explicitly in the program, it can be found in the standard or a user-defined library, or (when appropriate) it is implicitly defined (see 12.1, 12.4 and 12.8). An inline function shall be defined in every translation unit in which it is used.

Problem

What exactly does the One-Definition Rule in C++ say? The only trustworthy occurrence I can find is in The C++ Programming Language, 3rd. ed., P. 9.2.3. Is there any official definition of the rule except that?

Original source

Related problems