#pragma once #include #include #include // Specializing hash<> for user-defined type in std namespace, this is standard conforming. namespace std { template struct hash> { std::size_t operator()(const boost::detail::csr_edge_descriptor& edge_descriptor) const noexcept { static_assert(std::is_unsigned(), "An unsigned EdgeIndex is required for simple hashing returning the edge descriptor's index"); static_assert(std::numeric_limits::max() <= std::numeric_limits::max(), "EdgeIndex too large for simple hashing returning the edge descriptor's index"); return edge_descriptor.idx; } }; }