Index: uspace/lib/cpp/include/impl/vector.hpp
===================================================================
--- uspace/lib/cpp/include/impl/vector.hpp	(revision bfa86e5eaa3d8c32790e2a385666dac6430fe4fb)
+++ uspace/lib/cpp/include/impl/vector.hpp	(revision c06328dadb747bf6904cb4d931ce14ad6fd0ddce)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2017 Jaroslav Jindrak
+ * Copyright (c) 2018 Jaroslav Jindrak
  * All rights reserved.
  *
@@ -153,5 +153,17 @@
                          allocator_traits<Allocator>::is_always_equal::value)
             {
-                // TODO: implement
+                if (data_)
+                    allocator_.deallocate(data_, capacity_);
+
+                // TODO: test this
+                data_ = other.data_;
+                size_ = other.size_;
+                capacity_ = other.capacity_;
+                allocator_ = move(other.allocator_);
+
+                other.data_ = nullptr;
+                other.size_ = size_type{};
+                other.capacity_ = size_type{};
+                other.allocator_ = allocator_type{};
                 return *this;
             }
@@ -370,5 +382,4 @@
             }
 
-            // TODO: assert CopyInstertable etc with enable_if!
             void push_back(const T& x)
             {
@@ -584,6 +595,14 @@
     bool operator==(const vector<T, Alloc>& lhs, const vector<T, Alloc>& rhs)
     {
-        // TODO: implement
-        return false;
+        if (lhs.size() != rhs.size())
+            return false;
+
+        for (decltype(lhs.size()) i = 0; i < lhs.size(); ++i)
+        {
+            if (lhs[i] != rhs[i])
+                return false;
+        }
+
+        return true;
     }
 
@@ -591,6 +610,15 @@
     bool operator<(const vector<T, Alloc>& lhs, const vector<T, Alloc>& rhs)
     {
-        // TODO: implement
-        return false;
+        auto min_size = min(lhs.size(), rhs.size());
+        for (decltype(lhs.size()) i = 0; i < min_size; ++i)
+        {
+            if (lhs[i] >= rhs[i])
+                return false;
+        }
+
+        if (lhs.size() == rhs.size())
+            return true;
+        else
+            return lhs.size() < rhs.size();
     }
 
@@ -604,6 +632,5 @@
     bool operator>(const vector<T, Alloc>& lhs, const vector<T, Alloc>& rhs)
     {
-        // TODO: implement
-        return false;
+        return rhs < lhs;
     }
 
@@ -611,6 +638,5 @@
     bool operator>=(const vector<T, Alloc>& lhs, const vector<T, Alloc>& rhs)
     {
-        // TODO: implement
-        return false;
+        return !(lhs < rhs);
     }
 
@@ -618,6 +644,5 @@
     bool operator<=(const vector<T, Alloc>& lhs, const vector<T, Alloc>& rhs)
     {
-        // TODO: implement
-        return false;
+        return !(rhs < lhs);
     }
 
@@ -631,4 +656,10 @@
         lhs.swap(rhs);
     }
+
+    /**
+     * 23.3.7, class vector<bool>:
+     */
+
+    // TODO: implement
 }
 
