跳转至

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,保持单次转移语义。

查看固定 commit 源码 · 返回证据索引