这似乎是用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_t
和unit
(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)