When a call by the
  implementation to an operating system or other underlying API results in an
  error that prevents the function from meeting its specifications, an exception
  of type
filesystem_error shall be thrown
.For functions with a single path
  argument, that argument shall be passed to the
filesystem_error constructor with a single path argument
.For
  functions with two path arguments, the first of these arguments shall be
  passed to the
filesystem_error constructor as the 
path1 argument,
  and the second shall be passed as the 
path2 argument
.The
  
filesystem_error constructor's 
error_code argument
  is set as appropriate for the specific operating system dependent error
.