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