Home

c++模拟实现defer

前述 golang的defer语法带来的便捷性和观感真是太好了,代码写起来神清气爽,c语言没有这个关键字有点可惜。 有许多相同想法的大佬已经模拟实现过了,这边拿其中一个写的不错的代码拿来再简单封装一下。 参考代码 https://github.com/Microsoft/GSL/blob/ebe7ebfd855a95eb93783164ffb342dbd85cbc27/include/gsl/gsl_util#L85-L89 封装实现和测试 #include <iostream> #include <functional> template <class F> class final_act { public: explicit f...

Read more

brpc学习

前述 只是对一部分源码内容进行记录 随缘 关键函数 GlobalInitializeOrDie 使用场景: server启动: Start() => StartInternal() => InitializeOnce() => GlobalInitializeOrDie() server添加服务: AddService() => AddServiceInternal() => InitializeOnce() => GlobalInitializeOrDie() channel初始化: Init() / InitSingle() => GlobalInitializeOrDie() ...

Read more

c++偏特化模板实现

背景 在c++模板使用过程中,偶尔可能会出现一些特殊的情况,有些特定的类型,需要跟通用逻辑不一样的处理,或者需要其他的处理。 当然这种情况下,单纯靠模板进行处理并不是最优解,但是今天讨论的是如何在这种情况下实现某些特定类型的区别实现。 有一部分是按模板类型来处理,有一部分是确定的类型来处理,这种情况我在网上搜了一下,似乎叫做偏特化模板。 实现 比较丑陋的实现方法 #include <iostream> #include <sstream> #include <typeinfo> #include <cxxabi.h> class Test { public: template <typename T> v...

Read more