12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- #ifndef BASE_CONTAINERS_ADAPTERS_H_
- #define BASE_CONTAINERS_ADAPTERS_H_
- #include <stddef.h>
- #include <iterator>
- #include <utility>
- namespace base {
- namespace internal {
- template <typename T>
- class ReversedAdapter {
- public:
- using Iterator = decltype(std::rbegin(std::declval<T&>()));
- explicit ReversedAdapter(T& t) : t_(t) {}
- ReversedAdapter(const ReversedAdapter& ra) : t_(ra.t_) {}
- ReversedAdapter& operator=(const ReversedAdapter&) = delete;
- Iterator begin() const { return std::rbegin(t_); }
- Iterator end() const { return std::rend(t_); }
- private:
- T& t_;
- };
- }
- template <typename T>
- internal::ReversedAdapter<T> Reversed(T& t) {
- return internal::ReversedAdapter<T>(t);
- }
- }
- #endif
|