// Copyright (C) 2020 T. Zachary Laine // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef BOOST_PARSER_DETAIL_TEXT_IN_OUT_RESULT_HPP #define BOOST_PARSER_DETAIL_TEXT_IN_OUT_RESULT_HPP #include namespace boost::parser::detail { namespace text { /** A replacement for C++20's `std::ranges::in_out_result` for use in pre-C++20 build modes. */ template struct in_out_result { [[no_unique_address]] I in; [[no_unique_address]] O out; }; }} #if BOOST_PARSER_DETAIL_TEXT_USE_CONCEPTS #include namespace boost::parser::detail { namespace text { BOOST_PARSER_DETAIL_TEXT_NAMESPACE_V2 { namespace dtl { template std::ranges::borrowed_iterator_t result_iterator(R &&); template requires std::is_pointer_v> Ptr result_iterator(Ptr &&); template using uc_result_iterator = decltype(dtl::result_iterator(std::declval())); } }}} #endif #endif