 special type that can be caught
  by handlers for either the old or new type,
  but for GCC 7.1, 7.2 and 7.3 the library throws the new
  <code class="classname">std::ios_base::failure</code> type,
  and for GCC 5.x and 6.x the library throws the old type.
  Catch handlers of type <code class="classname">std::ios_base::failure</code>
  will only catch the exceptions if using a newer release,
  or if the handler is compiled with the same ABI as the type thrown by
  the library.
  Handlers for <code class="c