$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: [boost] Why is iterator_traits<unordered_map<K, M>>::pointer a detail::ptr_node type rather than value_type *?
From: Alex Mohr (amohr_at_[hidden])
Date: 2014-10-17 17:06:10
The iterator type looks like:
template <typename NodePointer, typename Value>
struct iterator
: public boost::iterator<
std::forward_iterator_tag, Value, std::ptrdiff_t,
NodePointer, Value&>
The NodePointer argument here (which is
boost::unordered::detail::ptr_node<...>) becomes the
iterator_traits<>::pointer type.
But iterator's operator->() returns Value *:
Value* operator->() const {
return &node_->value();
}
Why shouldn't iterator_traits<>::pointer be Value* here? This
detail::ptr_node<> type seems intended to be completely internal.
Thanks,
Alex