result values of file_status(file_type::not_found)
and file_status(file_type::unknown) are not considered failures and do not
cause an exception to be thrown.
Let prms denote the result of (m & perms::mask),
where m is determined as if by converting the st_mode member
of the obtained struct stat to the type perms.
If the specific error indicates that p cannot be resolved
because some element of the path does not exist, returns
file_status(file_type::not_found).
Otherwise, if the specific error indicates that p can be resolved
but the attributes cannot be determined, returns
file_status(file_type::unknown).
These semantics distinguish between p being known not to exist, p existing but not being able to determine its attributes,
and there being an error that prevents even knowing if p exists.
These
distinctions are important to some use cases.
Otherwise, if the attributes indicate an implementation-defined
file type ([fs.enum.file.type]),
returns file_status(file_type::A, prms),
where A is the constant for the
implementation-defined file type.