Fix move ResizeableObject move constructor

It wasn't handling non-owned allocators correctly, which messed up using
the move constructor on aos StaticBuilders.

Change-Id: Ie751fd0a0c76db723b375aaec310de66b08a55b1
Signed-off-by: James Kuszmaul <james.kuszmaul@bluerivertech.com>
diff --git a/aos/events/event_loop_param_test.cc b/aos/events/event_loop_param_test.cc
index f4f2fcc..d2d3aa9 100644
--- a/aos/events/event_loop_param_test.cc
+++ b/aos/events/event_loop_param_test.cc
@@ -133,6 +133,33 @@
   EXPECT_TRUE(happened);
 }
 
+// Tests that a static sender's Builder object can be moved safely.
+TEST_P(AbstractEventLoopTest, StaticBuilderMoveConstructor) {
+  auto loop1 = MakePrimary();
+
+  aos::Sender<TestMessageStatic> sender =
+      loop1->MakeSender<TestMessageStatic>("/test");
+  aos::Fetcher<TestMessage> fetcher = loop1->MakeFetcher<TestMessage>("/test");
+  std::optional<aos::Sender<TestMessageStatic>::StaticBuilder> moved_to_builder;
+  {
+    aos::Sender<TestMessageStatic>::StaticBuilder moved_from_builder =
+        sender.MakeStaticBuilder();
+    moved_to_builder.emplace(std::move(moved_from_builder));
+  }
+
+  loop1->OnRun([this, &moved_to_builder]() {
+    moved_to_builder.value()->set_value(200);
+    CHECK(moved_to_builder.value().builder()->Verify());
+    moved_to_builder.value().CheckOk(moved_to_builder.value().Send());
+    this->Exit();
+  });
+
+  ASSERT_FALSE(fetcher.Fetch());
+  Run();
+  ASSERT_TRUE(fetcher.Fetch());
+  EXPECT_EQ(200, fetcher->value());
+}
+
 // Tests that watcher can receive messages from a sender, sent via SendDetached.
 TEST_P(AbstractEventLoopTest, BasicSendDetached) {
   auto loop1 = Make();