Переглянути джерело

Merge pull request #100563 from Ivorforce/move-semantics-list

Add move semantics (constructor, operator=) to `List`.
Thaddeus Crews 8 місяців тому
батько
коміт
92615f24e7
1 змінених файлів з 13 додано та 0 видалено
  1. 13 0
      core/templates/list.h

+ 13 - 0
core/templates/list.h

@@ -524,6 +524,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.
@@ -762,6 +771,10 @@ public:
 			it = it->next();
 		}
 	}
+	List(List &&p_list) {
+		_data = p_list._data;
+		p_list._data = nullptr;
+	}
 
 	List() {}