Loki原始碼閱讀之TypeList(未完)

2021-04-13 01:19:40 字數 1414 閱讀 5289

如果你使用過boost::tuple,而且閱讀過其原始碼,那麼,typelist在你的面前或許沒有任何的神秘感,你可以很輕易的讀懂typelist的原始碼,但是,tuple和typelist的設計目標是完全不一樣的.

typelist的基礎**

template

struct typelist

;這個**看起來沒有任何可發揮指出,但是alex將這些**和模板組合起來,就發揮了不可思議的變化.typelist的產生模板如下:

template

<

typename t1  = nulltype, typename t2  = nulltype, typename t3  = nulltype,

typename t4  = nulltype, typename t5  = nulltype, typename t6  = nulltype,

typename t7  = nulltype, typename t8  = nulltype, typename t9  = nulltype,

typename t10 = nulltype, typename t11 = nulltype, typename t12 = nulltype,

typename t13 = nulltype, typename t14 = nulltype, typename t15 = nulltype,

typename t16 = nulltype, typename t17 = nulltype, typename t18 = nulltype

>

struct maketypelist

;template<>

struct maketypelist<>

;這個就是typelist的產生**,而且是在編譯過程中產生的。 主要的技術是使用模板偏特化和模板遞迴。

所以,我們很容易推導出:

maketypelist::result = typelist> >;

同時,alex還提供了對typelist的操作模板,也是使用模板偏特化和模板遞迴實現的,如:

template

struct length< typelist>;};

template struct typeat;

template struct indexof;

template struct erase;

template struct eraseall;

template struct noduplicates;

template struct replace;

template struct replaceall;

template struct reverse;

template struct mostderived;

template struct derivedtofront;

原始碼閱讀 Glide原始碼閱讀之with方法(一)

前言 本篇基於4.8.0版本 原始碼閱讀 glide原始碼閱讀之with方法 一 原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 大多數情況下,我們使用glide 就一句 但是這一句 裡面蘊含著成噸的 with方法有以下幾個過載方法 publi...

原始碼閱讀 Glide原始碼閱讀之load方法(二)

原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 首先,load方法有以下幾個過載方法 public requestbuilder load nullable bitmap bitmap public requestbuilder load nu...

《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具

檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...