|
|
1
14
可以使用新类型的正向声明。
有了这个间接的方向,编译器应该可以让您摆脱它。 它不是很漂亮,但老实说,我认为你不能轻易打破自我参照。 |
|
2
5
不太难看,考虑到_ 这在GCC4.0.1中工作,并在COMEAU严格模式下编译良好。 模板定义被解析和延迟,直到它们被实例化。编译器甚至在创建一个rec-map-迭代器之前都看不到它是什么,到那时它就知道如何创建了;v)。
这是我使用的测试程序。
|
|
3
2
我不喜欢从我以前的答案中的容器派生,所以这里有一个替代方法:
现在你必须使用
使用派生迭代器类型应该可以。例如,您仍然可以从这个结构的元素初始化反向迭代器。 |
|
|
4
2
除了potatoswatter的答案之外,如果您不介意多次引用整个模板化的映射类型,您只需要子类化迭代器,不需要任何预先声明:
然后使用完整类型:
另外,这里有一个更新(我目前为止最喜欢的),通过声明ReCyMax作为别名,可以被模板化:
这与Potatoswatter的版本相同:
|