
I have no preference for either enum based or multiple function based solution, but I am curious to what the benifit of an enum based solution is.
--
I prefer to use enumerations when the interface allows, cause one can add string operators to them for debugging purposes and keep them around more easily in user-defined structs. Exceptions thrown from get_os_path() might include the discriminator, making things a little easier at the catch site.. namespace example { struct user_file_path { filesystem::os_path_t root; filesystem::path file_path; filesystem::path get() { return filesystem::get_os_path(root) / file_path; } }; void foo() { user_file_path p = {..., ....}; try { p.get(): } catch(const bad_os_path& p) { clog << "failed to get os path " << p.os_path(); } } } Christian