C++模板
文章平均质量分 77
虽不易
居安思危,思则有备,有备无患。
展开
-
Drogon网络库URL转发过程源码解析
Drogon是C++开发的后端服务框架,在看示例代码时,简短的语法一下是真的美,于是打算花点时间学习其中的实现细节。看到request解析到响应的业务处理部分,有个地方处理很是巧妙,跟Qt的信号槽机制神似。请求到后端服务后,首先做HTTP的协议解析,然后根据URL获取访问路径及请求参数,查找匹配的业务处理接口,接口调用拿到响应结果返回给客户端。查找匹配业务接口的过程,库中是这样的处理:1) 定义了一套处理接口的注册机制。a. 指定匹配的URL模式,URL中所有可填充参数的部分都用占位符表示,类似Pyt原创 2021-05-15 20:56:36 · 1431 阅读 · 3 评论 -
Template 2nd阅读摘要(1)
延迟推导Cont中的模板形参可以是不完整类型,因为其内部成员elems为指针类型。template<typename T>class Cont {private:T* elems;public:…};但是一旦加了foo()成员函数:template<typename T>class Cont {private:T* elems;public:…typename std::conditional<std::is_move_constructi.原创 2020-07-19 18:28:08 · 189 阅读 · 0 评论 -
functional源码分析
function类的实现中涉及到的类:_Func_base最顶层的基础模板类,定义了函数对象在可调用对象保存时的内存管理纯虚接口,如Copy、Move等。同时定义了函数调用的虚接口_Do_call。这些纯虚接口要求在子类中实现。同时在_Func_base的声明中template<class _Rx, class... _Types> class _Func_base {...}保存了其关联函数指针的类型信息,返回值类型Rx,各入参类型列表_Types,这些模板形参在模板类的实原创 2020-07-04 13:11:13 · 494 阅读 · 0 评论 -
模板设计和推导
看到QT的源码,梳理下模板函数的问题分解和设计思路。模板与函数的对应关系 template<typename T> //入参:一个多个,模板形参所允许的类型 struct SomeFunc // 函数名称:对应声明的类名 { static const int value = some_value; //返回值:通过该函数调用获得的类型或数值结果; usin...原创 2020-04-04 21:50:28 · 160 阅读 · 0 评论 -
Boost中is_incrementable实现细节推敲
is_incrementable.hpp代码阅读中的template实现细节推敲, 如代码注释:namespace boost { namespace detail {// is_incrementable<T> metafunction//// Requires: Given x of type T&, if the expression ++x is well-fo...原创 2020-03-08 17:14:16 · 247 阅读 · 0 评论