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))); |
} |