Summary
Use namespace aliases to save typing, and to allow dropping in alternative implementations of a library namespace, such as Boost.
std::error_code
provides a very neat way to pass integer error codes up the stack without exception handling; consider using it if you work in a domain where exception handling is frowned upon. (In which case, that is likely all you will be able to take away from this particular chapter! The <filesystem>
library provides both throwing and non-throwing APIs; however, both APIs use the heap-allocating (and, potentially, throwing fs::path
as a vocabulary type. The only reason to use the non-throwing API is if it eliminates a case of "using exceptions for control flow.)
std::error_condition
provides only syntactic sugar for "catching" error codes; avoid it like the plague.
A path
consists of a root_name
, a root_directory
, and a relative_path
; the last of these is made up of names separated by slashes. To POSIX, a name is a string of raw bytes; to Windows...