#pragma once #include #include namespace vanetza { namespace geodesy { /** * Standard country or area codes for statistical use by M49 standard. * \see https://unstats.un.org/unsd/methodology/m49/ */ class M49Code { public: explicit constexpr M49Code(uint16_t value) : m_value(value) {} constexpr uint16_t value() const { return m_value; } bool operator==(M49Code other) const { return m_value == other.m_value; } bool operator!=(M49Code other) const { return m_value != other.m_value; } private: uint16_t m_value; }; } // namespace geodesy } // namespace vanetza namespace std { template<> struct hash { std::size_t operator()(vanetza::geodesy::M49Code code) const { return std::hash{}(code.value()); } }; template<> struct less { bool operator()(vanetza::geodesy::M49Code a, vanetza::geodesy::M49Code b) const { return a.value() < b.value(); } }; } // namespace std