在它的核心,如何提升元组实现的(没有所有的额外细节在升压头)(At it's core, h

2019-10-16 18:11发布

这似乎是用10米的东西硬编码的模板,但也有一个缺点模板类非常相似,从Lokki TYPELIST的实现。 所以是升压元组模板只是围绕一个类型串/缺点实现的包装? 或什么是它的要点?

Answer 1:

在C ++ 03(因为否则我们将谈论std::tuple )也没有可变参数模板功能,因此它是模拟足够数量的参数(*)与特定的默认值。

你可以得到实际执行读取的暗示设计决策的理由 :

利弊列表的结束标志(零,null_type,...)

元组在内部表示为利弊清单:

 tuple<int, int> 

从继承

 cons<int, cons<int, null_type> > 

null_type是列表的结束标志。 原命题是nil ,但该名称已在使用的MacOS,以及可能造成的问题,所以null_type改为被选择了。 考虑其他的名字是null_tunit (SML中的空tuple类型)。

需要注意的是null_type是一个空的元组的内部表示: tuple<>从继承null_type

(*)一般在升压的代码与使用宏产生,使得上限是可配置的。



文章来源: At it's core, how is boost tuple implemented (without all the extra details in the boost header)