title: Exception specifications are not compatible in declaration and in realisation of function
body: <p>We have following code</p>
  
  <pre><code>int main()
  {
    void f() throw(int);
    f();
    return 0;
  }
  
  void f() { }
  </code></pre>
  
  <p>GCC and clang compiles it well. But, in standard there is such paragraph:</p>
  
  <p>n3376 15.4/4
  <Blockquote><P>
  If any <strong>declaration of a function has an exception-specification</strong> that is not a noexcept-specification allowing
  all exceptions, <strong>all declarations, including the definition and any explicit specialization, of that function shall have a compatible exception-specification</strong>.</P></Blockquote></p>
  
  <p>And for following example: gcc - error, clang - warning</p>
  
  <pre><code>void f() throw(int);
  
  int main()
  {
    f();
    return 0;
  }
  
  void f() { }
  </code></pre>
  
  <p>Why there is difference in these snippets? Thanks.</p>