title: What if the default parameter value is defined in code not visible at the call site?
body: <p>I've found some strange code...</p>
  
  <pre><code>//in file ClassA.h:
  class ClassA {
  public:
      void Enable( bool enable );
  };
  
  //in file ClassA.cpp
  #include &lt;ClassA.h&gt;
  void ClassA::Enable( bool enable = true )
  {
     //implementation is irrelevant
  }
  
  //in Consumer.cpp
  #include &lt;ClassA.h&gt;
  ....
  ClassA classA;
  classA.Enable( true );
  </code></pre>
  
  <p>Obviously since <code>Consumer.cpp</code> only included <code>ClassA.h</code> and not <code>ClassA.cpp</code> the compiler will not be able to see that the parameter has a default value.</p>
  
  <p>When would the declared default value of <code>ClassA::Enable</code> in the signature of the method implementation have any effect? Would this only happen when the method is called from within files that include the <code>ClassA.cpp</code>?</p>