MARLEY (Model of Argon Reaction Low Energy Yields)
v1.2.0
A Monte Carlo event generator for tens-of-MeV neutrino interactions
|
Template class that creates an iterator to a class member based on an iterator to a pointer (either bare or smart) to the class object. More...
#include <IteratorToPointerMember.hh>
Public Types | |
typedef std::iterator_traits< It >::difference_type | difference_type |
typedef std::iterator_traits< It >::iterator_category | iterator_category |
typedef R * | pointer |
typedef R & | reference |
typedef std::remove_reference< decltype(*std::declval< T_pointer >)) >::type | T |
Type of the target of the pointer pointed to by the original iterator. More... | |
typedef std::iterator_traits< It >::value_type | T_pointer |
Type of the pointer pointed to by the original iterator. | |
typedef R | value_type |
Public Member Functions | |
IteratorToPointerMember (It from, R T::*memptr) | |
Construction from an iterator and a pointer to member. More... | |
bool | operator!= (const IteratorToPointerMember< It, R > &rhs) const |
virtual reference | operator* () const |
IteratorToPointerMember | operator+ (difference_type n) const |
IteratorToPointerMember & | operator++ () |
IteratorToPointerMember | operator++ (int) |
Postfix operator++ (dummy argument) More... | |
IteratorToPointerMember & | operator+= (difference_type n) |
difference_type | operator- (const IteratorToPointerMember< It, R > &rhs) const |
IteratorToPointerMember | operator- (difference_type n) const |
IteratorToPointerMember & | operator-- () |
IteratorToPointerMember | operator-- (int) |
Postfix operator-- (see note about the postfix operator++) | |
IteratorToPointerMember & | operator-= (difference_type n) |
virtual pointer | operator-> () const |
bool | operator== (const IteratorToPointerMember< It, R > &rhs) const |
reference | operator[] (difference_type n) const |
Public Attributes | |
It | m_it |
Protected Attributes | |
value_type T::* | m_memptr |
Template class that creates an iterator to a class member based on an iterator to a pointer (either bare or smart) to the class object.
Ideally this class would inherit from marley::IteratorToMember and merely override the operator*() and operator->() functions, but such behavior doesn't appear to be currently possible (6/2016) using template classes.
It | type of the original iterator |
R | type of the member we want to point to |
typedef std::remove_reference< decltype( *std::declval<T_pointer>) ) >::type marley::IteratorToPointerMember< It, R >::T |
Type of the target of the pointer pointed to by the original iterator.
We could have used std::remove_pointer<T_pointer>::type here as well, but that approach does not work with smart pointers (e.g., std::unique_ptr).
|
inline |
Construction from an iterator and a pointer to member.
from | Iterator to the object |
memptr | Pointer to the member of interest |
|
inline |
Postfix operator++ (dummy argument)