Merge pull request #7241 from Morph1984/resultval-move-assignment
hle/result: Add move assignment operator in ResultVal
This commit is contained in:
		| @@ -206,7 +206,7 @@ public: | ||||
|         return result; | ||||
|     } | ||||
|  | ||||
|     ResultVal(const ResultVal& o) : result_code(o.result_code) { | ||||
|     ResultVal(const ResultVal& o) noexcept : result_code(o.result_code) { | ||||
|         if (!o.empty()) { | ||||
|             new (&object) T(o.object); | ||||
|         } | ||||
| @@ -224,7 +224,7 @@ public: | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     ResultVal& operator=(const ResultVal& o) { | ||||
|     ResultVal& operator=(const ResultVal& o) noexcept { | ||||
|         if (this == &o) { | ||||
|             return *this; | ||||
|         } | ||||
| @@ -244,6 +244,26 @@ public: | ||||
|         return *this; | ||||
|     } | ||||
|  | ||||
|     ResultVal& operator=(ResultVal&& o) noexcept { | ||||
|         if (this == &o) { | ||||
|             return *this; | ||||
|         } | ||||
|         if (!empty()) { | ||||
|             if (!o.empty()) { | ||||
|                 object = std::move(o.object); | ||||
|             } else { | ||||
|                 object.~T(); | ||||
|             } | ||||
|         } else { | ||||
|             if (!o.empty()) { | ||||
|                 new (&object) T(std::move(o.object)); | ||||
|             } | ||||
|         } | ||||
|         result_code = o.result_code; | ||||
|  | ||||
|         return *this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Replaces the current result with a new constructed result value in-place. The code must not | ||||
|      * be an error code. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 bunnei
					bunnei