Index: uspace/lib/cpp/include/impl/utility.hpp
===================================================================
--- uspace/lib/cpp/include/impl/utility.hpp	(revision 875788a8f6a9a1d32b9cfd23a37541171cc0b146)
+++ uspace/lib/cpp/include/impl/utility.hpp	(revision 82d256ef1588a9bf14895e791b655b5ddc74abae)
@@ -214,5 +214,53 @@
      */
 
-    // TODO: implement
+    template<class T1, class T2>
+    constexpr bool operator==(const pair<T1, T2>& lhs,
+                              const pair<T1, T2>& rhs)
+    {
+        return lhs.first == rhs.first && lhs.second == rhs.second;
+    }
+
+    template<class T1, class T2>
+    constexpr bool operator<(const pair<T1, T2>& lhs,
+                             const pair<T1, T2>& rhs)
+    {
+        return lhs.first < rhs.first ||
+            (!(rhs.first < lhs.first) && lhs.second < rhs.second);
+    }
+
+    template<class T1, class T2>
+    constexpr bool operator!=(const pair<T1, T2>& lhs,
+                              const pair<T1, T2>& rhs)
+    {
+        return !(lhs == rhs);
+    }
+
+    template<class T1, class T2>
+    constexpr bool operator>(const pair<T1, T2>& lhs,
+                             const pair<T1, T2>& rhs)
+    {
+        return rhs < lhs;
+    }
+
+    template<class T1, class T2>
+    constexpr bool operator>=(const pair<T1, T2>& lhs,
+                              const pair<T1, T2>& rhs)
+    {
+        return !(lhs < rhs);
+    }
+
+    template<class T1, class T2>
+    constexpr bool operator<=(const pair<T1, T2>& lhs,
+                              const pair<T1, T2>& rhs)
+    {
+        return !(rhs < lhs);
+    }
+
+    template<class T1, class T2>
+    constexpr void swap(pair<T1, T2>& lhs, pair<T1, T2>& rhs)
+        noexcept(noexcept(lhs.swap(rhs)))
+    {
+        lhs.swap(rhs);
+    }
 
     template<class T1, class T2>
