我正在阅读Alexandrescu 的 Modern C++ Design 的第 3 章。它解释了HierarchyGenerators.h的实现,但是从那时起对库进行了更改。
当用于生成层次结构的类型列表有重复时,我无法理解如何ScatterHierarchyTag
解决解析Field
函数中的歧义(该函数允许我们访问由特定定义的成员Base<type>
,例如Field<int>(Object)
让我们获得一个&Base<int>
to )。Object
(例如:)GenScatterHierarchy<TYPELIST_4(int,int,string,Widget), Base> Object
我看到它在每个分支中添加了一个唯一的“类型/标签”,就在根Base<type>
类之前,但仍然存在歧义,对吗?
先感谢您。
编辑:
显示类型列表中重复类型的多重继承问题的图表。GSH = GenScatterdHierarchy
我相信唯一的标签是单独插入的,对于两个连接中的每Base<int>
一个(用蓝线标记)(根中的其他基类也是如此)
另外,我插入了图片,让大家更容易理解。如果它不符合 stackoverflow 的指南,请告诉我,我将删除它。