31struct GeoPoint
final {
33 std::optional<
double> dist;
34 std::optional<uint64_t> hash;
35 std::optional<
Point> point;
39 GeoPoint(std::string member, std::optional<
double> dist, std::optional<uint64_t> hash, std::optional<
Point> point)
40 : member(std::move(member)),
46 bool operator==(
const GeoPoint& rhs)
const {
47 return std::tie(member, dist, hash, point) == std::tie(rhs.member, rhs.dist, rhs.hash, rhs.point);
50 bool operator!=(
const GeoPoint& rhs)
const {
return !(*
this == rhs); }
57struct MemberScore
final {
61 MemberScore() =
default;
62 MemberScore(std::string member,
double score)
63 : member(std::move(member)),
67 operator std::pair<std::string,
double>()
const& {
return {member, score}; }
69 operator std::pair<std::string,
double>() && {
return {std::move(member), score}; }
71 operator std::pair<
const std::string,
double>()
const& {
return {member, score}; }
73 operator std::pair<
const std::string,
double>() && {
return {std::move(member), score}; }
75 bool operator==(
const MemberScore& rhs)
const {
return member == rhs.member && score == rhs.score; }
77 bool operator!=(
const MemberScore& rhs)
const {
return !(*
this == rhs); }