22 #ifndef GEARS_ADL_ITERATOR_HPP 
   23 #define GEARS_ADL_ITERATOR_HPP 
   35 constexpr 
auto adl_begin(T&& t) -> decltype(
begin(std::declval<T>())) {
 
   36     return begin(std::forward<T>(t));
 
   40 constexpr 
auto adl_end(T&& t) -> decltype(
end(std::declval<T>())) {
 
   41     return end(std::forward<T>(t));
 
   61 constexpr 
auto begin(T&& t) -> decltype(detail::adl_begin(std::declval<T>())) {
 
   62     return detail::adl_begin(std::forward<T>(t));
 
   81 constexpr 
auto end(T&& t) -> decltype(detail::adl_end(std::declval<T>())) {
 
   82     return detail::adl_end(std::forward<T>(t));
 
   87 #endif // GEARS_ADL_ITERATOR_HPP