diff --git a/include/boost/parser/detail/text/detail/all_t.hpp b/include/boost/parser/detail/text/detail/all_t.hpp index 6a977cb2..c9e67378 100644 --- a/include/boost/parser/detail/text/detail/all_t.hpp +++ b/include/boost/parser/detail/text/detail/all_t.hpp @@ -34,7 +34,13 @@ namespace boost::parser::detail::text::detail { constexpr bool container_ = is_detected_v; template - constexpr bool view = range_ && !container_; + constexpr bool view = +#if BOOST_PARSER_DETAIL_TEXT_USE_CONCEPTS || defined(__cpp_lib_concepts) + std::ranges::view +#else + range_ && !container_ +#endif + ; template< typename R, @@ -98,12 +104,13 @@ namespace boost::parser::detail::text::detail { template>> [[nodiscard]] constexpr auto operator()(R && r) const { - if constexpr (view>) + using T = remove_cv_ref_t; + if constexpr (view) return (R &&) r; else if constexpr (can_ref_view) - return ref_view((R &&) r); + return ref_view(r); else - return owning_view((R &&) r); + return owning_view(std::move(r)); } };