在它的核心,如何实现提升元组(在提升标头中没有所有额外的细节)
At it's core, how is boost tuple implemented (without all the extra details in the boost header)
它似乎是一个包含 10 件事的硬编码模板,但还有一个与 Lokki 的 Typelist 非常相似的 cons 模板类的实现。那么提升元组模板只是 Typelist/cons 实现的包装器吗?或者它的要点是什么?
在 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 中的空元组类型(。请注意,
null_type
是空元组的内部表示形式:tuple<>
继承自null_type
。
(*( 通常在 Boost 中,代码是使用宏生成的,因此上限是可配置的。
相关文章:
- 如果没有malloc,链表实现将失败
- 如何在c++中实现处理器调度模拟器
- 如何在c++中使用引用实现类似python的行为
- 实现无开销push_back的最佳方法是什么
- 使用简单类型列表实现的指数编译时间.为什么
- 如何在BST的这个简单递归实现中消除警告
- 实现一个在集合上迭代的模板函数
- 'using namespace'实现细节的便捷方法(仅标头库)?
- 将C++项目迁移到 Java,保护实现细节
- 如何在C++共享库中隐藏业务对象的实现细节并提供接口
- 接口,在C++中隐藏具体的实现细节
- 无锁单写多读列表的实现细节
- 为初学者澄清C++中类定义和实现的一些细节
- 在它的核心,如何实现提升元组(在提升标头中没有所有额外的细节)
- 如何查找编译器实现细节
- 循环包含在c++头文件中隐藏实现细节的技巧
- 通过减少填充头的数量来隐藏实现细节
- boost::python是如何工作的?对实现细节有什么想法吗?
- Reference_wrapper实现细节
- 内存池背后的常见实现细节是什么?