Clang trunk won't compile <experimental/filesystem> due to a conflict between a default member initializer and "foo() noexcept = default;" so this simply removes the noexept. The defaulted constructors should still be noexcept anyway, so there's no need to explicitly require it.
PR libstdc++/80448 * include/experimental/bits/fs_dir.h (directory_iterator) (recursive_directory_iterator): Remove noexcept from defaulted constructors. Tested ppc64le-linux, committed to trunk.
commit 2a66f241c739fc2c3c93e82a30bee97823a8df63 Author: Jonathan Wakely <jwak...@redhat.com> Date: Wed Apr 19 11:52:27 2017 +0100 PR libstdc++/80448 remove noexcept from defaulted functions PR libstdc++/80448 * include/experimental/bits/fs_dir.h (directory_iterator) (recursive_directory_iterator): Remove noexcept from defaulted constructors. diff --git a/libstdc++-v3/include/experimental/bits/fs_dir.h b/libstdc++-v3/include/experimental/bits/fs_dir.h index 3bdf911..0efaf94 100644 --- a/libstdc++-v3/include/experimental/bits/fs_dir.h +++ b/libstdc++-v3/include/experimental/bits/fs_dir.h @@ -181,7 +181,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 typedef const directory_entry& reference; typedef input_iterator_tag iterator_category; - directory_iterator() noexcept = default; + directory_iterator() = default; explicit directory_iterator(const path& __p) @@ -262,7 +262,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 typedef const directory_entry& reference; typedef input_iterator_tag iterator_category; - recursive_directory_iterator() noexcept = default; + recursive_directory_iterator() = default; explicit recursive_directory_iterator(const path& __p) @@ -282,8 +282,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 recursive_directory_iterator( const recursive_directory_iterator&) = default; - recursive_directory_iterator( - recursive_directory_iterator&&) noexcept = default; + recursive_directory_iterator(recursive_directory_iterator&&) = default; ~recursive_directory_iterator();