iterator_for.hpp 670 Bytes
Newer Older
Paul's avatar
Paul committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#ifndef MIGRAPH_GUARD_RTGLIB_ITERATOR_FOR_HPP
#define MIGRAPH_GUARD_RTGLIB_ITERATOR_FOR_HPP

namespace migraph {

template <class T> 
    struct iterator_for_range {
    T* base;
    using base_iterator = decltype(base->begin());

    struct iterator {
        base_iterator i;
        base_iterator operator * () { return i; }
        base_iterator operator ++ () { return ++i; }
        bool operator != (const iterator& rhs) { return i != rhs.i; }
    };

    iterator begin() { return {base->begin()}; }
    iterator end() { return {base->end()}; }
};
template <class T>
iterator_for_range<T> iterator_for(T& x) 
{
    return {&x};
}

} // namespace migraph

#endif