boost :: multi_index_container :: index <Tag> :: type有什么意义?

MSa*_*ers 5 c++ boost typedef multi-index

如果您有boost::multi_index_container< >多个索引,显然有多种方法可以迭代它 - 每个索引定义一种方式.例如,如果您有一个带标记的索引T,则可以迭代container.get<T>().begin()container.get<T>().end().

如果您尝试在for循环中执行此操作(并且没有C++ 0x auto),则迭代器的类型为multi_index_container<...>::index<T>::type::iterator.现在index<T>::type将是boost :: multi_index :: detail :: ordered_index或者结构上相同的东西.例如,它将提供iteratortypedef和begin()方法.

现在我的问题是,既然multi_index_container< >::index<T>似乎只存在于typedef中index<T>::type,并且index<T>::type已知成员,为什么不index<T>键入这些成员呢?这将允许你写multi_index_container<...>::index<T>::iterator.

同样,为什么multi_index_container< >::index_iterator<T>不是迭代器?multi_index_container< >::index_iterator<T>::type是的,但Boost为什么选择嵌入式typedef?同样,::type似乎只添加混乱.

In *_*ico 2

就我个人而言,我认为这只是一个疏忽。特别是对于像boost::multi_index_container<T>. 我经常发现我编写的代码本身并不是错误,但回想起来我觉得我可以做得更好。