diff --git a/include/flatbuffers/flatbuffers.h b/include/flatbuffers/flatbuffers.h index 1f45668c8..a7d80b204 100644 --- a/include/flatbuffers/flatbuffers.h +++ b/include/flatbuffers/flatbuffers.h @@ -453,6 +453,16 @@ class DetachedBuffer { other.size_ = 0; } + DetachedBuffer &operator=(DetachedBuffer &&other) { + std::swap(allocator_, other.allocator_); + std::swap(own_allocator_, other.own_allocator_); + std::swap(buf_, other.buf_); + std::swap(reserved_, other.reserved_); + std::swap(cur_, other.cur_); + std::swap(size_, other.size_); + return *this; + } + ~DetachedBuffer() { if (buf_) { assert(allocator_); diff --git a/tests/test.cpp b/tests/test.cpp index 840114c17..fa7fa6e11 100644 --- a/tests/test.cpp +++ b/tests/test.cpp @@ -1640,7 +1640,8 @@ int main(int /*argc*/, const char * /*argv*/[]) { // Run our various test suites: std::string rawbuf; - auto flatbuf = CreateFlatBufferTest(rawbuf); + auto flatbuf1 = CreateFlatBufferTest(rawbuf); + auto flatbuf = std::move(flatbuf1); // Test move assignment. AccessFlatBufferTest(reinterpret_cast(rawbuf.c_str()), rawbuf.length()); AccessFlatBufferTest(flatbuf.data(), flatbuf.size());