3.5 [basic.link] paragraph 8 from N4567 says that
... A type without linkage shall not be used as the type of a variable or function with external linkage unless
- the entity has C language linkage (7.5), or
- the entity is declared within an unnamed namespace (7.3.1), or
- the entity is not odr-used (3.2) or is defined in the same translation unit.
[Note: In other words, a type without linkage contains a class or enumeration that cannot be named outside its translation unit...]
If a type without linkage cannot be named outside its translation unit, how can a declaration in other translation units denote the same type in order to be a part of C language linkage?