From: Vsevolod Stakhov Date: Fri, 8 Oct 2021 13:39:40 +0000 (+0100) Subject: [Minor] Add explicit move operators for mime_string X-Git-Tag: 3.1~71 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=5c4438a5bb7656b36cf9c5299cfbfa32f2834b7e;p=rspamd.git [Minor] Add explicit move operators for mime_string --- diff --git a/src/libmime/mime_string.hxx b/src/libmime/mime_string.hxx index 94bdafb02..fbd03206a 100644 --- a/src/libmime/mime_string.hxx +++ b/src/libmime/mime_string.hxx @@ -283,6 +283,11 @@ public: basic_mime_string(const view_type &st, const Allocator& alloc = Allocator()) noexcept : basic_mime_string(st.data(), st.size(), alloc) {} + /* Explicit move ctor */ + basic_mime_string(basic_mime_string &&other) noexcept { + *this = std::move(other); + } + /** * Creates a string with a filter function. It is calee responsibility to @@ -310,6 +315,14 @@ public: const Allocator& alloc = Allocator()) noexcept : basic_mime_string(st.data(), st.size(), std::move(filt), alloc) {} + /* It seems some libc++ implementations still perform copy, this might fix them */ + basic_mime_string& operator=(basic_mime_string &&other) { + storage = std::move(other.storage); + filter_func = std::move(other.filter_func); + + return *this; + } + constexpr auto size() const noexcept -> std::size_t { return storage.size(); }