template<typename T> struct valstat final {
T* value;
std::errc status;
};
valstat<const char> FindUsersCity() noexcept
{
if (auto [contacts, errc] = GetOrOpenContactsServerConnection(); contacts)
{
if (auto [uid, errc] = contacts->GetUserId(); uid) {
if (auto [geo, errc] = GetOrOpenGeoServerConnection(); geo) {
if (auto [uloc, errc] = geo->GetLocation(uid); uloc) {
return uloc->GetCityName();
}
else {
return { {}, errc };
}
}
else {
return { {}, errc };
}
}
else {
return { {}, errc };
}
}
else {
return { {}, errc };
}
}