Forráskód Böngészése

Add move semantics (constructor, operator=) to `List`.

Lukas Tenbrink 8 hónapja
szülő
commit
19992e3284
1 módosított fájl, 13 hozzáadás és 0 törlés
  1. 13 0
      core/templates/list.h

+ 13 - 0
core/templates/list.h

@@ -522,6 +522,15 @@ public:
 			it = it->next();
 		}
 	}
+	void operator=(List &&p_list) {
+		if (unlikely(this == &p_list)) {
+			return;
+		}
+
+		clear();
+		_data = p_list._data;
+		p_list._data = nullptr;
+	}
 
 	// Random access to elements, use with care,
 	// do not use for iteration.
@@ -760,6 +769,10 @@ public:
 			it = it->next();
 		}
 	}
+	List(List &&p_list) {
+		_data = p_list._data;
+		p_list._data = nullptr;
+	}
 
 	List() {}