Index: webrtc/base/messagehandler.h |
diff --git a/webrtc/base/messagehandler.h b/webrtc/base/messagehandler.h |
index 6a3c2ef7402bdf9203ef350dcff740f806d1210d..66c6bdfb5926aa80d13d7284b91f383aa317b077 100644 |
--- a/webrtc/base/messagehandler.h |
+++ b/webrtc/base/messagehandler.h |
@@ -45,23 +45,13 @@ class FunctorMessageHandler : public MessageHandler { |
} |
const ReturnT& result() const { return result_; } |
- private: |
- FunctorT functor_; |
- ReturnT result_; |
-}; |
- |
-// Specialization for std::unique_ptr<ReturnT>. |
-template <class ReturnT, class FunctorT> |
-class FunctorMessageHandler<class std::unique_ptr<ReturnT>, FunctorT> |
- : public MessageHandler { |
- public: |
- explicit FunctorMessageHandler(const FunctorT& functor) : functor_(functor) {} |
- virtual void OnMessage(Message* msg) { result_ = std::move(functor_()); } |
- std::unique_ptr<ReturnT> result() { return std::move(result_); } |
+ // Returns moved result. Should not call result() or ConsumeResult() again |
+ // after this. |
pthatcher1
2017/02/10 18:18:01
What happens if you do?
Taylor Brandstetter
2017/02/10 19:29:42
Undefined behavior.
|
+ ReturnT ConsumeResult() { return std::move(result_); } |
tommi
2017/02/10 19:38:55
MoveResult() ?
Taylor Brandstetter
2017/02/11 01:03:30
Done.
|
private: |
FunctorT functor_; |
- std::unique_ptr<ReturnT> result_; |
+ ReturnT result_; |
}; |
// Specialization for ReturnT of void. |
@@ -74,6 +64,7 @@ class FunctorMessageHandler<void, FunctorT> : public MessageHandler { |
functor_(); |
} |
void result() const {} |
+ void ConsumeResult() {} |
private: |
FunctorT functor_; |