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...
brpc学习
前述
只是对一部分源码内容进行记录 随缘
关键函数
GlobalInitializeOrDie
使用场景:
server启动: Start() => StartInternal() => InitializeOnce() => GlobalInitializeOrDie()
server添加服务: AddService() => AddServiceInternal() => InitializeOnce() => GlobalInitializeOrDie()
channel初始化: Init() / InitSingle() => GlobalInitializeOrDie()
...
c++偏特化模板实现
背景
在c++模板使用过程中,偶尔可能会出现一些特殊的情况,有些特定的类型,需要跟通用逻辑不一样的处理,或者需要其他的处理。
当然这种情况下,单纯靠模板进行处理并不是最优解,但是今天讨论的是如何在这种情况下实现某些特定类型的区别实现。
有一部分是按模板类型来处理,有一部分是确定的类型来处理,这种情况我在网上搜了一下,似乎叫做偏特化模板。
实现
比较丑陋的实现方法
#include <iostream>
#include <sstream>
#include <typeinfo>
#include <cxxabi.h>
class Test {
public:
template <typename T>
v...
38 post articles, 6 pages.