ev-drogon-traits-enable-if-autocreate-001¶
| 字段 | 值 |
|---|---|
| 项目 | drogonframework/drogon |
| 固定 commit | 3aae769cc405 |
| 路径 | lib/inc/drogon/DrObject.h |
| 行段 | L60-L69 |
| 特性 | 类型特征(type_traits) |
| 许可证 | MIT |
| 代码来源 | 项目源码 |
| 级别 | manual |
| 审核 | zyuhao7 @ 2026-11-03 |
| 测试代码 | 否 |
| 发现方式 | manual |
用法¶
用 enable_if 与 is_same 做 SFINAE,检测类是否声明自动创建标志
为什么典型¶
框架需要在编译期判断某个控制器类型是否提供 const bool isAutoCreation;第一个重载参与重载决议,检测失败时回退到可变参数版本。
摘录¶
template <typename T>
struct isAutoCreationClass
{
template <class C>
static constexpr auto check(C *) -> std::enable_if_t<
std::is_same_v<decltype(C::isAutoCreation), const bool>,
bool>
{
return C::isAutoCreation;
}
备注¶
生产头文件;返回类型中的 enable_if_t 只在条件成立时存在,这是 C++11 起标准的 SFINAE 检测手法。