Browse Source

[Minor] Add explicit move operators for mime_string

tags/3.1
Vsevolod Stakhov 2 years ago
parent
commit
5c4438a5bb
1 changed files with 13 additions and 0 deletions
  1. 13
    0
      src/libmime/mime_string.hxx

+ 13
- 0
src/libmime/mime_string.hxx View File

basic_mime_string(const view_type &st, basic_mime_string(const view_type &st,
const Allocator& alloc = Allocator()) noexcept : const Allocator& alloc = Allocator()) noexcept :
basic_mime_string(st.data(), st.size(), alloc) {} 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 * Creates a string with a filter function. It is calee responsibility to
const Allocator& alloc = Allocator()) noexcept : const Allocator& alloc = Allocator()) noexcept :
basic_mime_string(st.data(), st.size(), std::move(filt), alloc) {} 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 { constexpr auto size() const noexcept -> std::size_t {
return storage.size(); return storage.size();
} }

Loading…
Cancel
Save