#pragma once #include #include #include namespace cruft::hash { // A trivial adapter around the `std::hash` that avoids the need to // specify the type up front. // // Useful as a component in more complex hash objects (eg, hash::tuple) struct std { template auto operator () (ValueT &&val) const { using inner_t = ::std::remove_cvref_t; return ::std::hash {} (::std::forward (val)); } }; }