Skip to content

Instantly share code, notes, and snippets.

@estan
Created October 22, 2017 08:20
Show Gist options
  • Save estan/bb7eee22bf308bfb05021e3952b30535 to your computer and use it in GitHub Desktop.
Save estan/bb7eee22bf308bfb05021e3952b30535 to your computer and use it in GitHub Desktop.
reverse(..) helper for range-based for
#pragma once
#include <iterator>
// Reversed iterator
template <typename T>
struct reversion_wrapper {
T& iterable;
};
template <typename T>
auto begin(reversion_wrapper<T> wrapper) {
using namespace std;
return rbegin(wrapper.iterable);
}
template <typename T>
auto end(reversion_wrapper<T> wrapper) {
using namespace std;
return rend(wrapper.iterable);
}
template <typename T>
reversion_wrapper<T> reverse(T&& iterable) {
return { iterable };
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment