From b3229d48b7595969f8ec82cfb5ee89f788248f2c Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Sat, 11 Jan 2020 05:27:57 +0200 Subject: [PATCH] gcc < 7 doesn't like specializing std::hash in a different namespace --- include/boost/variant2/variant.hpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/include/boost/variant2/variant.hpp b/include/boost/variant2/variant.hpp index df78adf..e99382c 100644 --- a/include/boost/variant2/variant.hpp +++ b/include/boost/variant2/variant.hpp @@ -1855,18 +1855,23 @@ template struct std_hash_impl } // namespace variant2 } // namespace boost -template struct std::hash< boost::variant2::variant >: public boost::variant2::detail::std_hash_impl< boost::variant2::variant > +namespace std +{ + +template struct hash< ::boost::variant2::variant >: public ::boost::variant2::detail::std_hash_impl< ::boost::variant2::variant > { }; -template<> struct std::hash< boost::variant2::monostate > +template<> struct hash< ::boost::variant2::monostate > { - std::size_t operator()( boost::variant2::monostate const & v ) const + std::size_t operator()( ::boost::variant2::monostate const & v ) const { return hash_value( v ); } }; +} // namespace std + #if defined(_MSC_VER) && _MSC_VER < 1910 # pragma warning( pop ) #endif