| 1658 | |
| 1659 | template <typename T> |
| 1660 | struct is_range { |
| 1661 | static const bool value = |
| 1662 | !std::is_same<decltype(begin(std::declval<T>())), not_this_one>::value && |
| 1663 | !std::is_same<decltype(end(std::declval<T>())), not_this_one>::value; |
| 1664 | }; |
| 1665 | |
| 1666 | #if defined(_MANAGED) // Managed types are never ranges |
| 1667 | template <typename T> |