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 作为类型擦除后的参数包存储,再在绑定阶段展开。