The C++ Standard [ISO/IEC 14882-2003] Section 3.2 One definition rule says, in paragraph 3: "Every program shall contain exactly one definition of every non-inline function or object that is used in that program; no diagnostic required." Although it is possible to check that this rule is complied with (see [[Quinlan 06]])