Index: uspace/lib/cpp/include/impl/string.hpp
===================================================================
--- uspace/lib/cpp/include/impl/string.hpp	(revision 86d193944078ba8b964bd441ce40f4ab101f3e55)
+++ uspace/lib/cpp/include/impl/string.hpp	(revision c439e6a7b131ddc747573ef474654a05af44b4f4)
@@ -1909,5 +1909,43 @@
      */
 
-    // TODO: implement
+    template<class>
+    struct hash;
+
+    template<>
+    struct hash<string>
+    {
+        size_t operator()(const string& str) const noexcept
+        {
+            size_t res{};
+
+            /**
+             * Note: No need for fancy algorithms here,
+             *       std::hash is used for indexing, not
+             *       cryptography.
+             */
+            for (const auto& c: str)
+                res = res * 5 + (res >> 3) + static_cast<size_t>(c);
+
+            return res;
+        }
+
+        using argument_type = string;
+        using result_type   = size_t;
+    };
+
+    template<>
+    struct hash<wstring>
+    {
+        size_t operator()(const wstring& str) const noexcept
+        {
+            // TODO: implement
+            return size_t{};
+        }
+
+        using argument_type = wstring;
+        using result_type   = size_t;
+    };
+
+    // TODO: add those other 2 string types
 
     /**
@@ -1924,4 +1962,7 @@
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wliteral-suffix"
+inline namespace literals {
+inline namespace string_literals
+{
     string operator "" s(const char* str, size_t len);
     u16string operator "" s(const char16_t* str, size_t len);
@@ -1931,4 +1972,5 @@
     wstring operator "" s(const wchar_t* str, size_t len);
     */
+}}
 #pragma GCC diagnostic pop
 }
