跳转至

ev-drogon-apply-sql-binder-001

字段 值
项目 drogonframework/drogon
固定 commit 3aae769cc405
路径 orm_lib/inc/drogon/orm/Criteria.h
行段 L119-L128
特性 std::invoke 与 std::apply
许可证 MIT
代码来源 项目源码
级别 manual
审核 zyuhao7 @ 2026-10-26
测试代码 否
发现方式 manual

用法

用 std::apply 把捕获的 tuple 展开成 SQL 参数绑定调用

为什么典型

参数个数和类型在构造时确定,std::apply 把 tuple 解包后逐个转发给 binder,避免手写下标展开。

摘录

        outputArgumentsFunc_ =
            [args = std::make_tuple(std::forward<Arguments>(args)...)](
                internal::SqlBinder &binder) mutable {
                return std::apply(
                    [&binder](auto &&...args) {
                        (void)std::initializer_list<int>{
                            (binder << std::forward<Arguments>(args), 0)...};
                    },
                    std::move(args));
            };

备注

生产路径;tuple 作为类型擦除后的参数包存储,再在绑定阶段展开。

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