// // iterator_fwd.hpp // iterator // // Created by Sam Jaffe on 2/18/17. // #pragma once #include #include namespace iterator { namespace detail { template struct void_t { using type = void; }; template using value_iterator = decltype(std::begin(*std::declval())); template using mapped_iterator = decltype(std::begin(std::declval()->second)); } struct {} in_place; using in_place_t = decltype(in_place); template class end_aware_iterator; template class joining_iterator; template class recursive_iterator; template class recursive_iterator_n; }