Index: uspace/lib/cpp/include/impl/string.hpp
===================================================================
--- uspace/lib/cpp/include/impl/string.hpp	(revision 5209fd7121f8fca1bdba19f033c9262422c2599b)
+++ uspace/lib/cpp/include/impl/string.hpp	(revision 00d9778441f487bb88808cce7174d7487db6e0c6)
@@ -563,4 +563,6 @@
                     swap(tmp);
                 }
+
+                return *this;
             }
 
@@ -571,4 +573,6 @@
                 if (this != &other)
                     swap(other);
+
+                return *this;
             }
 
@@ -1693,7 +1697,6 @@
 
     template<class Char, class Traits, class Allocator>
-    basic_string<Char, Traits, Allocator>
-    operator==(const basic_string<Char, Traits, Allocator>& lhs,
-               const basic_string<Char, Traits, Allocator>& rhs) noexcept
+    bool operator==(const basic_string<Char, Traits, Allocator>& lhs,
+                    const basic_string<Char, Traits, Allocator>& rhs) noexcept
     {
         return lhs.compare(rhs) == 0;
@@ -1701,7 +1704,6 @@
 
     template<class Char, class Traits, class Allocator>
-    basic_string<Char, Traits, Allocator>
-    operator==(const Char* lhs,
-               const basic_string<Char, Traits, Allocator>& rhs)
+    bool operator==(const Char* lhs,
+                    const basic_string<Char, Traits, Allocator>& rhs)
     {
         return rhs == lhs;
@@ -1709,7 +1711,6 @@
 
     template<class Char, class Traits, class Allocator>
-    basic_string<Char, Traits, Allocator>
-    operator==(const basic_string<Char, Traits, Allocator>& lhs,
-               const Char* rhs)
+    bool operator==(const basic_string<Char, Traits, Allocator>& lhs,
+                    const Char* rhs)
     {
         return lhs.compare(rhs) == 0;
@@ -1721,7 +1722,6 @@
 
     template<class Char, class Traits, class Allocator>
-    basic_string<Char, Traits, Allocator>
-    operator!=(const basic_string<Char, Traits, Allocator>& lhs,
-               const basic_string<Char, Traits, Allocator>& rhs) noexcept
+    bool operator!=(const basic_string<Char, Traits, Allocator>& lhs,
+                    const basic_string<Char, Traits, Allocator>& rhs) noexcept
     {
         return !(lhs == rhs);
@@ -1729,7 +1729,6 @@
 
     template<class Char, class Traits, class Allocator>
-    basic_string<Char, Traits, Allocator>
-    operator!=(const Char* lhs,
-               const basic_string<Char, Traits, Allocator>& rhs)
+    bool operator!=(const Char* lhs,
+                    const basic_string<Char, Traits, Allocator>& rhs)
     {
         return rhs != lhs;
@@ -1737,7 +1736,6 @@
 
     template<class Char, class Traits, class Allocator>
-    basic_string<Char, Traits, Allocator>
-    operator!=(const basic_string<Char, Traits, Allocator>& lhs,
-               const Char* rhs)
+    bool operator!=(const basic_string<Char, Traits, Allocator>& lhs,
+                    const Char* rhs)
     {
         return lhs.compare(rhs) != 0;
@@ -1749,7 +1747,6 @@
 
     template<class Char, class Traits, class Allocator>
-    basic_string<Char, Traits, Allocator>
-    operator<(const basic_string<Char, Traits, Allocator>& lhs,
-              const basic_string<Char, Traits, Allocator>& rhs) noexcept
+    bool operator<(const basic_string<Char, Traits, Allocator>& lhs,
+                   const basic_string<Char, Traits, Allocator>& rhs) noexcept
     {
         return lhs.compare(rhs) < 0;
@@ -1757,7 +1754,6 @@
 
     template<class Char, class Traits, class Allocator>
-    basic_string<Char, Traits, Allocator>
-    operator<(const Char* lhs,
-              const basic_string<Char, Traits, Allocator>& rhs)
+    bool operator<(const Char* lhs,
+                   const basic_string<Char, Traits, Allocator>& rhs)
     {
         return rhs.compare(lhs) > 0;
@@ -1765,7 +1761,6 @@
 
     template<class Char, class Traits, class Allocator>
-    basic_string<Char, Traits, Allocator>
-    operator<(const basic_string<Char, Traits, Allocator>& lhs,
-              const Char* rhs)
+    bool operator<(const basic_string<Char, Traits, Allocator>& lhs,
+                   const Char* rhs)
     {
         return lhs.compare(rhs) < 0;
@@ -1777,7 +1772,6 @@
 
     template<class Char, class Traits, class Allocator>
-    basic_string<Char, Traits, Allocator>
-    operator>(const basic_string<Char, Traits, Allocator>& lhs,
-              const basic_string<Char, Traits, Allocator>& rhs) noexcept
+    bool operator>(const basic_string<Char, Traits, Allocator>& lhs,
+                   const basic_string<Char, Traits, Allocator>& rhs) noexcept
     {
         return lhs.compare(rhs) > 0;
@@ -1785,7 +1779,6 @@
 
     template<class Char, class Traits, class Allocator>
-    basic_string<Char, Traits, Allocator>
-    operator>(const Char* lhs,
-              const basic_string<Char, Traits, Allocator>& rhs)
+    bool operator>(const Char* lhs,
+                   const basic_string<Char, Traits, Allocator>& rhs)
     {
         return rhs.compare(lhs) < 0;
@@ -1793,7 +1786,6 @@
 
     template<class Char, class Traits, class Allocator>
-    basic_string<Char, Traits, Allocator>
-    operator>(const basic_string<Char, Traits, Allocator>& lhs,
-              const Char* rhs)
+    bool operator>(const basic_string<Char, Traits, Allocator>& lhs,
+                   const Char* rhs)
     {
         return lhs.compare(rhs) > 0;
@@ -1805,7 +1797,6 @@
 
     template<class Char, class Traits, class Allocator>
-    basic_string<Char, Traits, Allocator>
-    operator<=(const basic_string<Char, Traits, Allocator>& lhs,
-               const basic_string<Char, Traits, Allocator>& rhs) noexcept
+    bool operator<=(const basic_string<Char, Traits, Allocator>& lhs,
+                    const basic_string<Char, Traits, Allocator>& rhs) noexcept
     {
         return lhs.compare(rhs) <= 0;
@@ -1813,7 +1804,6 @@
 
     template<class Char, class Traits, class Allocator>
-    basic_string<Char, Traits, Allocator>
-    operator<=(const Char* lhs,
-               const basic_string<Char, Traits, Allocator>& rhs)
+    bool operator<=(const Char* lhs,
+                    const basic_string<Char, Traits, Allocator>& rhs)
     {
         return rhs.compare(lhs) >= 0;
@@ -1821,7 +1811,6 @@
 
     template<class Char, class Traits, class Allocator>
-    basic_string<Char, Traits, Allocator>
-    operator<=(const basic_string<Char, Traits, Allocator>& lhs,
-               const Char* rhs)
+    bool operator<=(const basic_string<Char, Traits, Allocator>& lhs,
+                    const Char* rhs)
     {
         return lhs.compare(rhs) <= 0;
@@ -1833,7 +1822,6 @@
 
     template<class Char, class Traits, class Allocator>
-    basic_string<Char, Traits, Allocator>
-    operator>=(const basic_string<Char, Traits, Allocator>& lhs,
-               const basic_string<Char, Traits, Allocator>& rhs) noexcept
+    bool operator>=(const basic_string<Char, Traits, Allocator>& lhs,
+                    const basic_string<Char, Traits, Allocator>& rhs) noexcept
     {
         return lhs.compare(rhs) >= 0;
@@ -1841,7 +1829,6 @@
 
     template<class Char, class Traits, class Allocator>
-    basic_string<Char, Traits, Allocator>
-    operator>=(const Char* lhs,
-               const basic_string<Char, Traits, Allocator>& rhs)
+    bool operator>=(const Char* lhs,
+                    const basic_string<Char, Traits, Allocator>& rhs)
     {
         return rhs.compare(lhs) <= 0;
@@ -1849,7 +1836,6 @@
 
     template<class Char, class Traits, class Allocator>
-    basic_string<Char, Traits, Allocator>
-    operator>=(const basic_string<Char, Traits, Allocator>& lhs,
-               const Char* rhs)
+    bool operator>=(const basic_string<Char, Traits, Allocator>& lhs,
+                    const Char* rhs)
     {
         return lhs.compare(rhs) >= 0;
