I can't spot where, but something has changed in the last couple of days that has broken building quickbook: https://app.circleci.com/pipelines/github/boostorg/math/635/workflows/33cd9b... ../../../boost/container_hash/hash.hpp:654:30: error: call of overloaded 'hash_value(const boost::filesystem::path&)' is ambiguous 654 | return hash_value( val ); | ~~~~~~~~~~^~~~~~~ ../../../boost/container_hash/hash.hpp:382:9: note: candidate: 'typename boost::enable_if_<((boost::hash_detail::is_range<T>::value && (! boost::hash_detail::is_contiguous_range<T>::value)) && (! boost::hash_detail::is_unordered_range<T>::value)), long unsigned int>::type boost::hash_value(const T&) [with T = boost::filesystem::path; typename boost::enable_if_<((boost::hash_detail::is_range<T>::value && (! boost::hash_detail::is_contiguous_range<T>::value)) && (! boost::hash_detail::is_unordered_range<T>::value)), long unsigned int>::type = long unsigned int]' 382 | hash_value( T const& v ) | ^~~~~~~~~~ In file included from /root/boost-local/boost/tools/quickbook/src/files.hpp:18, from /root/boost-local/boost/tools/quickbook/src/files.cpp:10: ../../../boost/filesystem/path.hpp:1183:82: note: candidate: 'typename boost::enable_if<boost::is_same<T, boost::filesystem::path>, long unsigned int>::type boost::filesystem::hash_value(const T&) [with T = boost::filesystem::path; typename boost::enable_if<boost::is_same<T, boost::filesystem::path>, long unsigned int>::type = long unsigned int]' 1183 | inline typename boost::enable_if< boost::is_same< T, path >, std::size_t >::type hash_value(T const& p) BOOST_NOEXCEPT In point of fact, those two overloads do look genuinely ambiguous to me, so I'm not sure why this compiled before, or what changed to make it fail now? Ideas? Thanks, John.