Here is my work in progress to use allocator pointer type. This type is used both as the node pointer and as the buckets pointer. Rather than adapting _Local_iterator_base like _Node_iterator_base I prefer to just make it inherits from _Node_iterator_base. It simplifies its implementation and avoids to provided dedicated comparison operators. Now I wonder if I need to consider Phil Bouchard comment regarding how node pointers are being passed, either by value or reference. I already chose to pass them as rvalue references in some occasions and even lvalue reference like in _M_bucket_index method. Do you think I need to continue this way ? Maybe I should use some conditional type, if raw pointer we pass by value and otherwise we pass by ref ? François