263 if (it != map.end()) { |
263 if (it != map.end()) { |
264 map.erase(it); |
264 map.erase(it); |
265 } |
265 } |
266 } |
266 } |
267 |
267 |
|
268 template<typename T> |
|
269 using opt = std::optional<T>; |
|
270 |
268 // some magic code from https://en.cppreference.com/w/cpp/utility/variant/visit |
271 // some magic code from https://en.cppreference.com/w/cpp/utility/variant/visit |
269 // for use with std::visit |
272 // for use with std::visit |
270 template<class... Ts> struct overloaded : Ts... { using Ts::operator()...; }; |
273 template<class... Ts> struct overloaded : Ts... { using Ts::operator()...; }; |
271 template<class... Ts> overloaded(Ts...) -> overloaded<Ts...>; |
274 template<class... Ts> overloaded(Ts...) -> overloaded<Ts...>; |