id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 4494,recursive_directory_iterator throws unexpectedly in the non-throw mode,ttan@…,Beman Dawes,"In boost::filesystem v3, while it’s possible to choose a no-throw version of recursive_directory_iterator by passing an boost::system::error_code object to its constructor, like this: boost::system::error_code m_ec; for ( recursive_directory_iterator itr(root, m_ec), end_itr; itr != end_itr; ++itr) However, because in the implementation of the recursive_directory_iterator::increment(), directory_iterator is always constructed with the throw version, it would cause exception throws during the for-loop while accessing folders like \System Volume Information on Windows: void increment() { BOOST_ASSERT(m_imp.get() && ""increment of end recursive_directory_iterator""); m_imp->increment(0); if (m_imp->m_stack.empty()) m_imp.reset(); // done, so make end iterator } Where m_imp is an object of recur_dir_itr_imp: void recur_dir_itr_imp::increment(system::error_code* ec) // ec == 0 means throw on error { … } As it’s not possible to catch this exception within the for-loop and continue the loop, it greatly limits the use of recursive_directory_iterator. With a rough check, V2 does not seem to have this problem. it's preferred that the directory_iterator to behave the same as recursive_directory_iterator in this case. ",Feature Requests,assigned,Boost 1.44.0,filesystem,Boost Development Trunk,Problem,,filesystem v3 throw,