4#ifndef ITERATIONPROXY_H
5#define ITERATIONPROXY_H
12template <
typename Container,
typename T =
void>
16 m_container(container) {}
17 typename Container::iterator
begin() {
return m_container.begin(); }
18 typename Container::iterator
end() {
return m_container.end(); }
19 typename Container::const_iterator
begin()
const {
return m_container.begin(); }
20 typename Container::const_iterator
end()
const {
return m_container.end(); }
21 typename Container::const_iterator
cbegin() {
return m_container.cbegin(); }
22 typename Container::const_iterator
cend() {
return m_container.cend(); }
25 Container &m_container;
29template <
typename Container>
31 typename std::enable_if<std::is_same<typename std::iterator_traits<typename Container::iterator>::iterator_category,
32 std::random_access_iterator_tag>::value>::type> {
35 m_container(container) {}
36 typename Container::iterator
begin() {
return m_container.begin(); }
37 typename Container::iterator
end() {
return m_container.end(); }
38 typename Container::const_iterator
begin()
const {
return m_container.begin(); }
39 typename Container::const_iterator
end()
const {
return m_container.end(); }
40 typename Container::const_iterator
cbegin() {
return m_container.cbegin(); }
41 typename Container::const_iterator
cend() {
return m_container.cend(); }
43 typename Container::reference
operator[](
int i) {
return *(m_container.begin() + i); }
44 typename Container::const_reference
operator[](
int i)
const {
return *(m_container.begin() + i); }
47 Container &m_container;
50template <
typename Container>
IterationProxy< Container > MakeIterationProxy(Container &container)
Definition IterationProxy.h:51
Container::reference operator[](int i)
Definition IterationProxy.h:43
Container::const_iterator end() const
Definition IterationProxy.h:39
Container::iterator end()
Definition IterationProxy.h:37
IterationProxy(Container &container)
Definition IterationProxy.h:34
Container::const_iterator begin() const
Definition IterationProxy.h:38
Container::const_iterator cend()
Definition IterationProxy.h:41
Container::iterator begin()
Definition IterationProxy.h:36
Container::const_reference operator[](int i) const
Definition IterationProxy.h:44
Container::const_iterator cbegin()
Definition IterationProxy.h:40
Definition IterationProxy.h:13
Container::const_iterator cbegin()
Definition IterationProxy.h:21
IterationProxy(Container &container)
Definition IterationProxy.h:15
Container::const_iterator begin() const
Definition IterationProxy.h:19
Container::const_iterator end() const
Definition IterationProxy.h:20
Container::iterator begin()
Definition IterationProxy.h:17
Container::const_iterator cend()
Definition IterationProxy.h:22
Container::iterator end()
Definition IterationProxy.h:18