我正在阅读Alexandrescu的现代C ++设计的第3章。]它解释了HierarchyGenerators.h的实现,但是此后对该库进行了更改。
[我无法理解ScatterHierarchyTag
如何解决解析Field
函数时的歧义(该函数允许我们访问由特定Base<type>
定义的成员,例如Field<int>(Object)
将使我们获得&Base<int>
到[ C0]),当用于生成层次结构的类型列表重复时。 (例如:Object
)我看到它在根GenScatterHierarchy<TYPELIST_4(int,int,string,Widget), Base> Object
类之前的每个分支中添加了一个唯一的“类型/标签”,但仍然存在歧义吗?
谢谢你。
编辑:
该图显示了类型列表中重复类型的多重继承问题。GSH = GenScatterdHierarchy
Base<type>
我相信,对于与的两个连接中的每个连接,唯一标记都是分别插入的(用蓝线标记)(对于根的其他基类也是如此)
此外,我插入图片是为了使所有人都更容易理解。让我知道它是否不适合stackoverflow的准则,我将其删除。
我正在学习Alexandrescu的Modern C ++ Design的第3章。它解释了HierarchyGenerators.h的实现,但是此后对该库进行了更改。我无法...
Base<int>
不能消除歧义。它的作用是使模棱两可的基类可访问。