diff --git a/pc/channel_unittest.cc b/pc/channel_unittest.cc index 07e9e188ae..e675375a48 100644 --- a/pc/channel_unittest.cc +++ b/pc/channel_unittest.cc @@ -520,9 +520,10 @@ class ChannelTest : public testing::Test, public sigslot::has_slots<> { class ScopedCallThread { public: template - explicit ScopedCallThread(const FunctorT& functor) + explicit ScopedCallThread(FunctorT&& functor) : thread_(rtc::Thread::Create()), - task_(new rtc::FunctorMessageHandler(functor)) { + task_(new rtc::FunctorMessageHandler( + std::forward(functor))) { thread_->Start(); thread_->Post(RTC_FROM_HERE, task_.get()); } diff --git a/rtc_base/messagehandler.h b/rtc_base/messagehandler.h index 0c40853e21..67a3103178 100644 --- a/rtc_base/messagehandler.h +++ b/rtc_base/messagehandler.h @@ -55,7 +55,8 @@ class FunctorMessageHandler : public MessageHandler { template class FunctorMessageHandler : public MessageHandler { public: - explicit FunctorMessageHandler(const FunctorT& functor) : functor_(functor) {} + explicit FunctorMessageHandler(FunctorT&& functor) + : functor_(std::forward(functor)) {} virtual void OnMessage(Message* msg) { functor_(); } void result() const {} void MoveResult() {} diff --git a/rtc_base/timeutils_unittest.cc b/rtc_base/timeutils_unittest.cc index 9e7de069b5..a2e9a3f9e6 100644 --- a/rtc_base/timeutils_unittest.cc +++ b/rtc_base/timeutils_unittest.cc @@ -272,7 +272,7 @@ TEST(FakeClock, SettingTimeWakesThreads) { auto functor = [&message_handler_dispatched] { message_handler_dispatched.Set(); }; - FunctorMessageHandler handler(functor); + FunctorMessageHandler handler(std::move(functor)); worker->PostDelayed(RTC_FROM_HERE, 60000, &handler); // Wait for a bit for the worker thread to be started and enter its socket