/*
std::error_code ec;
safe_directory sdir{ std::filesystem::current_path(), ec };
for ( auto dirEntry : sdir )
{
if ( dirEntry.is_regular_file( ec ) )
std::cout << dirEntry.path() << std::endl;
}
*///iterator of directory items that will save any errors in (ec) instead of throwing exceptions
structsafe_directory_iterator{fs::directory_iteratorit;std::error_code&ec;safe_directory_iterator&operator++(){it.increment(ec);return*this;}autooperator*()const{return*it;}};// object of this struct can be passed to range based for
structsafe_directory{fs::pathdir;std::error_code&ec;base::safe_directory_iteratorbegin(){returnbase::safe_directory_iterator{fs::directory_iterator(dir,ec),ec};}fs::directory_iteratorend(){return{};}};inlinebooloperator!=(constsafe_directory_iterator&a,constfs::directory_iterator&b){return!a.ec&&a.it!=b;}