title: Using only std::exception in exception specification
body: <p>It seems it is general accepted that exception specifications are not helping as much as one thinks. But I wonder if a specification which only uses std::exception might be a good compromise:</p>
  
  <pre><code>void someFunction()
      throw ( std::exception );
  </code></pre>
  
  <ul>
  <li><p>It documents the fact that this method/function might throw an exception.</p></li>
  <li><p>It would make sure that only exceptions derived from std::exception are thrown and not some exotic classes like std::string or int.</p></li>
  </ul>
  
  <p>So, would this be better then not having any specification at all?</p>
  
  <p><strong>Update:</strong></p>
  
  <p>Regarding the Runtime-Overhead: Think of it like the usage of asserts. You are using asserts regardless of the runtime-overhead, right? I know you usually can disable them for a release-build, so maybe a better approach would be to wrap the exception specification in a macro so you can disable it for a release build. Something like:</p>
  
  <pre><code>#ifdef DEBUG
      #define THROW( exception ) throw ( exception )
  #else
      #define THROW( exception )
  #endif
  
  void someFunction()
      THROW( std::exception );
  </code></pre>