/// return iterator end (needed for range-based for)
 iteration_proxy_internal end() noexcept
 {
     return iteration_proxy_internal(container.end());
 }
 /// return iterator end (needed for range-based for)
 iteration_proxy_value<IteratorType> end() noexcept
 {
     return iteration_proxy_value<IteratorType>(container.end());
 }
 /// return iterator begin (needed for range-based for)
 iteration_proxy_internal begin() noexcept
 {
     return iteration_proxy_internal(container.begin());
 }
 /// return iterator begin (needed for range-based for)
 iteration_proxy_value<IteratorType> begin() noexcept
 {
     return iteration_proxy_value<IteratorType>(container.begin());
 }