Annex G (informative) Ill-formed, no diagnostic required [ifndr]

G.3 [basic]: Basics [ifndr.basic]

G.3.5[ifndr:basic.def.odr.definition.matches]
Specified in: [basic.def.odr]

If there are definitions in different translation units of a definable item D where
  • D is not defined by an injected declaration ([expr.const.reflect]),
  • D is not an inline or templated function or variable, and
  • D is not attached to a named module or the declarations are not reachable from one another,
that do not satisfy the matching rules described in [basic.def.odr], the program is ill-formed, no diagnostic required.
[Example 1: 

Translation unit #1:inline void f() {} // #1 inline void g() {} // #2 inline void h() {[]{}();} // #3 namespace { int i = 0; } inline void j() {++i;} // #4

Translation unit #2:inline void f() {} // OK, same as #1 inline void g() {;} // IFNDR, different sequence of tokens than #2 inline void h() {[]{}();} // IFNDR, closure has different type than #3 namespace { int i = 0; } inline void j() {++i; } // IFNDR, i refers to different entity than in #4 — end example]