
类模板
静态多态是在编译期确定函数调用的具体实现,通过模板和继承避免虚函数开销。其核心是利用模板参数传递派生类类型,使基类在编译时即可绑定到具体方法,典型实现为CRTP(奇异递归模板模式)和函数模板重载。例如...
SFINAE(替换失败非错误)允许模板替换失败时不报错,而是从候选列表中移除,用于编译期类型约束与重载选择;通过std::enable_if可实现条件化模板启用,如限制函数仅接受整型参数;C++17的...
模板元编程是在编译期通过模板实例化完成计算的技术,用于类型生成、常量计算和逻辑判断;示例包括编译期阶乘计算,利用类模板递归与特化实现,C++14变量模板简化常量定义,C++17ifconstexpr实...
两阶段名称查找指模板中非依赖名称在定义时解析,依赖名称在实例化时解析。例如,函数g()和变量x在模板定义时查找;而T::iterator或obj.process()等依赖模板参数的名称则延迟到实例化时...
std::conjunction和std::disjunction是C++17提供的编译期逻辑操作工具,分别实现类型trait的“与”和“或”判断,支持短路求值,常用于条件启用模板、构建复合类型特征及...
CRTP通过派生类继承自身作为模板参数的基类实现静态多态,编译期绑定类型并消除虚函数开销;基类用static_cast调用派生类方法,支持接口约束、功能封装、性能优化等场景,常见于Eigen等高性能库...
std::function是通用可调用对象包装器,能封装函数、lambda、成员函数等,提供统一调用接口;std::bind用于绑定函数与部分参数,生成新可调用对象,支持占位符和成员函数绑定;二者结合...
模板参数推导是编译器根据实参自动确定函数模板类型的过程,提升泛型编程效率。1.推导基于函数参数,不考虑返回值;2.普通引用形参需匹配左值,通用引用(T&&)结合引用折叠支持左值和右值;...