[PATCH] D79740: Align mapped_iterator::reference type with mapped_iterator::operator*() return value.
Ivan Kelarev via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri May 15 12:31:31 PDT 2020
ikelarev added a comment.
> Any chance you've looked into prior art (I assume Boost has something like this) with regards to when/how often the functor should be called?
David, as I can see, in boost transform_iterator calls the functor directly every time operator* is called.
More detailed, transform_iterator does not impelement operator* itself, it just have dereference() method which returns m_f(*this->base()) value. operator* is implemented in iterator_facade class, the base class of iterator_adaptor class which is base class of transform_iterator. iterator_facade class operator* implementation just returns iterator_core_access::dereference(this->derived()) value, where iterator_core_access::dereference method (declared in auxiliary iterator_core_access class) just calls f.dereference() method.
I used this source codes: https://github.com/boostorg/iterator/tree/develop/include/boost/iterator
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D79740/new/
https://reviews.llvm.org/D79740
More information about the llvm-commits
mailing list