Chromium Code Reviews| 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_; |