title: What if one of control paths doesn't return a value?
body: <pre><code>int f(int n)
  {
      if (n &gt; 0) return 1;
  }
  
  int main()
  {
      f(0); // Does the C++ standard see this as an error?
  }
  </code></pre>
  
  <p>Another example:</p>
  
  <pre><code>int f()
  {
      try
      { 
          return mayThrow();
      }  
      catch(...)
      {
          throw; // rethrow and no return. Is this conforming to the C++ standard?
      }
  }
  
  int main()
  {
      f();
  }
  </code></pre>
  
  <p>Third example:</p>
  
  <pre><code>int f()
  {
      try
      { 
          throw 0;
      }  
      catch(...)
      {
          throw; // rethrow and no return. Is this conforming to the C++ standard?
      }
  }
  
  int main()
  {
      f();
  }
  </code></pre>