Support move-only closures in TaskQueue
it allows to create less boil-plate code when marshaling call with move-only parameters (e.g. unique_ptr) to TaskQueue Bug: None Change-Id: I97ddf4f8409af2f83d69fd33267e9a87fb60d901 Reviewed-on: https://webrtc-review.googlesource.com/7619 Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org> Reviewed-by: Per Kjellander <perkj@webrtc.org> Cr-Commit-Position: refs/heads/master@{#20271}
This commit is contained in:

committed by
Commit Bot

parent
75dfd1c174
commit
6f09ae20bd
@ -15,6 +15,7 @@
|
||||
|
||||
#include <algorithm>
|
||||
#include <queue>
|
||||
#include <utility>
|
||||
|
||||
#include "rtc_base/arraysize.h"
|
||||
#include "rtc_base/checks.h"
|
||||
@ -170,10 +171,11 @@ class TaskQueue::Impl : public RefCountInterface {
|
||||
bool IsCurrent() const;
|
||||
|
||||
template <class Closure,
|
||||
typename std::enable_if<
|
||||
std::is_copy_constructible<Closure>::value>::type* = nullptr>
|
||||
void PostTask(const Closure& closure) {
|
||||
PostTask(std::unique_ptr<QueuedTask>(new ClosureTask<Closure>(closure)));
|
||||
typename std::enable_if<!std::is_convertible<
|
||||
Closure,
|
||||
std::unique_ptr<QueuedTask>>::value>::type* = nullptr>
|
||||
void PostTask(Closure&& closure) {
|
||||
PostTask(NewClosure(std::forward<Closure>(closure)));
|
||||
}
|
||||
|
||||
void PostTask(std::unique_ptr<QueuedTask> task);
|
||||
|
Reference in New Issue
Block a user