2
0
mirror of https://github.com/boostorg/parser.git synced 2026-01-19 04:22:13 +00:00

Flesh out conditional transform_replace_view enable_borrowed_range; fix

missing std::ranges:: on it and other enable_borrowed_range specializations.
This commit is contained in:
Zach Laine
2024-02-10 19:34:15 -06:00
parent d0208fb12c
commit 150e09e309
4 changed files with 20 additions and 15 deletions

View File

@@ -699,8 +699,8 @@ constexpr bool std::ranges::enable_borrowed_range<boost::parser::replace_view<
Parser,
GlobalState,
ErrorHandler,
SkipParser>> =
enable_borrowed_range<V> && enable_borrowed_range<ReplacementV>;
SkipParser>> = std::ranges::enable_borrowed_range<V> &&
std::ranges::enable_borrowed_range<ReplacementV>;
#endif
#endif

View File

@@ -667,7 +667,7 @@ template<
constexpr bool std::ranges::enable_borrowed_range<
boost::parser::
search_all_view<V, Parser, GlobalState, ErrorHandler, SkipParser>> =
enable_borrowed_range<V>;
std::ranges::enable_borrowed_range<V>;
#endif
#endif

View File

@@ -393,7 +393,7 @@ template<
constexpr bool std::ranges::enable_borrowed_range<
boost::parser::
split_view<V, Parser, GlobalState, ErrorHandler, SkipParser>> =
enable_borrowed_range<V>;
std::ranges::enable_borrowed_range<V>;
#endif
#endif

View File

@@ -10,6 +10,10 @@ namespace boost::parser {
namespace detail {
template<typename F>
constexpr bool tidy_func = std::is_trivially_copyable_v<F> &&
sizeof(F) <= sizeof(void *) * 2;
template<typename I, typename S, typename Parser>
using attr_type = decltype(std::declval<Parser const &>().call(
std::bool_constant<false>{},
@@ -342,7 +346,7 @@ namespace boost::parser {
ErrorHandler,
SkipParser>>
{
//private:
private:
using attr_t = detail::range_attr_t<V, Parser>;
using replacement_range = std::invoke_result_t<F &, attr_t>;
@@ -813,8 +817,7 @@ namespace boost::parser {
#endif
}
// TODO: Conditional borrowability.
#if 0 // BOOST_PARSER_USE_CONCEPTS
#if BOOST_PARSER_USE_CONCEPTS
template<
typename V,
typename F,
@@ -822,14 +825,16 @@ template<
typename GlobalState,
typename ErrorHandler,
typename SkipParser>
constexpr bool std::ranges::enable_borrowed_range<boost::parser::replace_view<
V,
F,
Parser,
GlobalState,
ErrorHandler,
SkipParser>> =
enable_borrowed_range<V> && enable_borrowed_range<F>;
constexpr bool
std::ranges::enable_borrowed_range<boost::parser::transform_replace_view<
V,
F,
Parser,
GlobalState,
ErrorHandler,
SkipParser>> = std::ranges::enable_borrowed_range<V> &&
(std::ranges::enable_borrowed_range<F> ||
boost::parser::detail::tidy_func<F>);
#endif
#endif