std::size_t operator()(argument_type const& val) { return hash<typename argument_type::position_type>()(val.position()) ^ hash<typename argument_type::length_type>()(val.radius()) ^ hash<typename argument_type::position_type>()(val.unit_z()) ^ hash<typename argument_type::length_type>()(val.half_length()); }
std::size_t operator()(argument_type const& val) { return hash<typename argument_type::position_type>()(val.position()) ^ hash<typename argument_type::position_type>()(val.unit_x()) ^ hash<typename argument_type::position_type>()(val.unit_y()) ^ hash<typename argument_type::position_type>()(val.unit_z()) ^ hash<typename argument_type::length_type>()(val.half_extent()[0]) ^ hash<typename argument_type::length_type>()(val.half_extent()[1]) ^ hash<typename argument_type::length_type>()(val.half_extent()[2]); }