title: Why do class member functions defined outside the class (but in header file) have to be inlined?
body: <p>I have read existing <a href="https://stackoverflow.com/questions/9734175/why-are-class-member-functions-inlined">answers</a> on the two meanings of inline, but I am still confused.</p>
  
  <p>Let's assume we have the following header file:</p>
  
  <pre><code>// myclass.h
  
  #ifndef INCLUDED_MYCLASS
  #define INCLUDED_MYCLASS
  
  class MyClass
  {
     public:
        void foo(); // declaration
  };
  
  inline void MyClass::foo()
  {
      // definition
  }
  
  #endif
  </code></pre>
  
  <p>Why does <code>void foo()</code> which is defined outside the class in the file, have to be explicitly defined with <code>inline</code>?</p>