Chromium Code Reviews| Index: webrtc/rtc_base/task_queue.h |
| diff --git a/webrtc/rtc_base/task_queue.h b/webrtc/rtc_base/task_queue.h |
| index e7eac2f18535ac7030d8c810b11fbf7c1d777800..5c6ce66c9b2d8548e7c96cfdcd0dd8e6fa7c0661 100644 |
| --- a/webrtc/rtc_base/task_queue.h |
| +++ b/webrtc/rtc_base/task_queue.h |
| @@ -22,6 +22,7 @@ |
| #include "webrtc/rtc_base/constructormagic.h" |
| #include "webrtc/rtc_base/criticalsection.h" |
| #include "webrtc/rtc_base/scoped_ref_ptr.h" |
| +#include "webrtc/rtc_base/type_traits.h" |
|
kwiberg-webrtc
2017/08/31 10:45:33
You should #include <type_traits> instead.
eladalon
2017/08/31 10:51:04
Done.
|
| #if defined(WEBRTC_WIN) |
| #include "webrtc/rtc_base/platform_thread.h" |
| @@ -189,7 +190,12 @@ class LOCKABLE TaskQueue { |
| // more likely). This can be mitigated by limiting the use of delayed tasks. |
| void PostDelayedTask(std::unique_ptr<QueuedTask> task, uint32_t milliseconds); |
| - template <class Closure> |
| + // std::enable_if is used here to make sure that calls to PostTask() with |
| + // std::unique_ptr<SomeClassDerivedFromQueuedTask> would not end up being |
| + // caught by this template. |
| + template <class Closure, |
| + typename std::enable_if< |
| + std::is_copy_constructible<Closure>::value>::type* = nullptr> |
| void PostTask(const Closure& closure) { |
|
nisse-webrtc
2017/08/31 09:40:39
One question: At some point, we'll move to C++17,
kwiberg-webrtc
2017/08/31 10:45:33
Yes. (But it's C++14, not 17.)
|
| PostTask(std::unique_ptr<QueuedTask>(new ClosureTask<Closure>(closure))); |
| } |