ev-drogon-function-callback-001¶
| 字段 | 值 |
|---|---|
| 项目 | drogonframework/drogon |
| 固定 commit | 3aae769cc405 |
| 路径 | lib/inc/drogon/HttpBinder.h |
| 行段 | L206-L219 |
| 特性 | std::function |
| 许可证 | MIT |
| 代码来源 | 项目源码 |
| 级别 | manual |
| 审核 | zyuhao7 @ 2026-10-30 |
| 测试代码 | 否 |
| 发现方式 | manual |
用法¶
用 std::function 接收异步响应回调并向下游转移
为什么典型¶
回调来自用户代码,签名固定但可捕获任意状态;std::function 擦除具体类型后仍能按值或按移动传递。
摘录¶
std::function<void(const HttpResponsePtr &)> &&callback) override
{
if (!pathArguments.empty())
{
std::vector<std::string> args;
args.reserve(pathArguments.size());
for (auto &arg : pathArguments)
{
args.emplace_back(arg);
}
req->setRoutingParameters(std::move(args));
}
run(pathArguments, req, std::move(callback));
}
备注¶
生产路径;右值引用接收避免多余拷贝,最后用 move 交给 run,保持单次转移语义。