message: Avoid unnecessary `DoneCallback` copies in functional_ops.cc.
diff: @@ -152,7 +152,7 @@ class IfOp : public AsyncOpKernel {
  : kernel_(kernel),
  ctx_(ctx),
  cond_(cond),
  - done_(done),
  + done_(std::move(done)),
  lib_(CHECK_NOTNULL(ctx_->function_library())) {
  SetRunOptions(ctx_, &opts_, true /* always_collect_stats */);
  for (int i = 1; i < ctx_->num_inputs(); ++i) {
  @@ -174,9 +174,9 @@ class IfOp : public AsyncOpKernel {
  s = SetOutputs(kernel_, ctx_, rets_);
  }
  ctx_->SetStatus(s);
  - auto done = done_;
  + DoneCallback captured_done(std::move(done_));
  delete this;
  - done();
  + captured_done();
  });
  }
  @@ -257,7 +257,7 @@ class WhileOp : public AsyncOpKernel {
  ctx_(ctx),
  cond_handle_(cond_handle),
  body_handle_(body_handle),
  - done_(done),
  + done_(std::move(done)),
  lib_(CHECK_NOTNULL(ctx_->function_library())) {
  SetRunOptions(ctx_, &opts_, false /* always_collect_stats */);
  for (int i = 0; i < ctx_->num_inputs(); ++i) {
  