If
D is a template and is defined in more than one
translation unit, then the preceding requirements
shall apply both to names from the template's enclosing scope used in the
template definition (
[temp.nondep]), and also to dependent names at
the point of instantiation (
[temp.dep])
. These requirements also apply to corresponding entities
defined within each definition of
D
(including the closure types of
lambda-expressions,
but excluding entities defined within default arguments or
default template arguments of either
D or
an entity not defined within
D)
. For each such entity and for
D itself,
the behavior is as if there is a single entity with a single definition,
including in the application of these requirements to other entities
. [
Note 4:
The entity is still declared in multiple translation units, and
[basic.link]
still applies to these declarations
. In particular,
lambda-expressions (
[expr.prim.lambda])
appearing in the type of
D might result
in the different declarations having distinct types, and
lambda-expressions appearing in a default argument of
D
might still denote different types in different translation units
. —
end note]