title: namespace called 'exception' leads to compile problems
body: <p>I have a problem with a namespace called "exception"</p>
  
  <p>Let's consider following example header:</p>
  
  <pre><code>#include &lt;exception&gt;
  
  namespace exception
  {
    struct MyException : public std::exception
    {};
  }
  
  
  struct AnotherException : public exception::MyException
  {
      AnotherException() : exception::MyException() { }
  };
  </code></pre>
  
  <p>This header does not compile with following error:</p>
  
  <pre>
  
      namespacetest.hpp: In constructor 'AnotherException::AnotherException()':
      namespacetest.hpp:12:48: error: expected class-name before '(' token
      namespacetest.hpp:12:48: error: expected '{' before '(' token
  
  </pre>
  
  <p>There are two solutions for this:</p>
  
  <p>1) qualify namespace with "::" in line 12</p>
  
  <pre><code>AnotherException() : ::exception::MyException() { }
  </code></pre>
  
  <p>2) Rename namespace to e.g. "exceptional"</p>
  
  <p>What is the reason, that the namespace "exceptions" leads to confusion? I know that there is a class std::exception. Does this cause the trouble?</p>