Безрассудная передача дополнительного аргумента обратному вызову - PullRequest
0 голосов
/ 30 мая 2020

У меня следующая структура кода:

bool A(std::function<void()> callback) const {
  B([this]() {
    C(
      std::bind(D, this, std::placeholders::_1));)
  });
  return true;
}

folly::Future<folly::Unit> B(const std::function<void()>& fn);
folly::Future<folly::Unit> C(std::function<void(folly::Optional<DataResult>)> fn);

Если бы D было просто:

void D(DataResult res) const {} <== Works

Я мог бы решить проблему. Но поскольку мне нужен обратный вызов в D, как это сделать? Я не возражаю, если DataResult передается в D в качестве побочного эффекта.

Для работы мне нужно следующее:

void D(std::function<void()> callback) const {  <=== Doesn't work
  callback();
}
...