Multiple Definition of Class in Different Translation unit
<p>I have few doubts in C++ standard section 3.2 [basic-def-odr] bullet point 6   ( i.e -3.2.6).</p>

<p>There couple of conditions are specified that tells if a class can be defined multiple times having each definition in separate Translation unit.</p>

<p>I an not able to find an example of the emphasized part below in this bullet:</p>

<blockquote>
  <p>in each definition of D, corresponding names, looked up according to
  [basic.lookup], <strong>shall refer to an entity defined within the
  definition of D, or shall refer to the same entity</strong>, after overload
  resolution ([over.match]) and after matching of partial template
  specialization ([temp.over]), except that a name can refer to a
  non-volatile const object with internal or no linkage if the object
  has the same literal type in all definitions of D, and the object is
  initialized with a constant expression ([expr.const]), and the object
  is not odr-used, and the object has the same value in all definitions
  of D .</p>
</blockquote>

<p>Can anyone please give an example where <strong>"shall refer to an entity defined within the definition of D"</strong> comes out to be false and makes multiple defintion as an error...</p>

<p>It would be more helpful if example can be provided to explain the below bullet in the same section as well..</p>

<blockquote>
  <p><em>in each definition of D, a default argument used by an (implicit or explicit) function call is treated as if its token sequence were
  present in the definition of D; that is, the default argument is
  subject to the three requirements described above (and, if the default
  argument has sub-expressions with default arguments, this requirement
  applies recursively</em></p>
</blockquote>

<p>Thanks in Advance </p>