在阅读 C++11 中的 SCARY 迭代器时,我看到:
从编译器的角度来看,这里没有错。然而,从实际的角度来看,列表迭代器和列表分配器之间没有任何语义依赖性。而且,通常对于所有 STL 容器,迭代器仅依赖于(语义上)容器元素类型。
不过有一点我不明白:
迭代器在或应用于它们
时返回reference和pointer类型。, ,等是从分配器中的s派生的。operator *operator->referencepointerdifference_typetypedef
但是分配器不一定要定义pointer为value_type *(甚至difference_type是ptrdiff_t),例如。
在不知道分配器的情况下,迭代器(一个 SCARY 的)如何可能知道要返回的数据类型?