跳转至

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 检测手法。

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