What exactly is One Definition Rule in C++?

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.

Leave a Comment