diff --git a/include/boost/parser/parser.hpp b/include/boost/parser/parser.hpp index 651822df..70590715 100644 --- a/include/boost/parser/parser.hpp +++ b/include/boost/parser/parser.hpp @@ -7890,11 +7890,10 @@ namespace boost { namespace parser { char const *, context_t, skipper_t> const; - using all_types = decltype(detail::hl::transform( - parsers, std::declval())); - auto all_types_wrapped = - detail::hl::transform(all_types{}, detail::wrap{}); - auto first_non_nope = detail::hl::fold_left( + using all_types = + decltype(hl::transform(parsers, std::declval())); + auto all_types_wrapped = hl::transform(all_types{}, detail::wrap{}); + auto first_non_nope = hl::fold_left( all_types_wrapped, wrapper{}, [=](auto result, auto type) { @@ -7906,11 +7905,11 @@ namespace boost { namespace parser { }); using first_t = typename decltype(first_non_nope)::type; static_assert( - !detail::is_nope_v, + !is_nope_v, "It looks like you wrote merge[p1 >> p2 >> ... pn], and none " "of the parsers p1, p2, ... pn produces an attribute. Please " "fix."); - detail::hl::for_each(all_types_wrapped, [=](T type) { + hl::for_each(all_types_wrapped, [=](T type) { using t = typename T::type; if constexpr (!is_nope_v) { static_assert( diff --git a/include/boost/parser/tuple.hpp b/include/boost/parser/tuple.hpp index 4dac65d0..f46f557d 100644 --- a/include/boost/parser/tuple.hpp +++ b/include/boost/parser/tuple.hpp @@ -185,7 +185,7 @@ namespace boost { namespace parser { template operator T() const && noexcept { -#if defined(__GNUC__) && __GNUC__ < 12 +#if defined(__GNUC__) && __GNUC__ < 13 // Yuck. std::remove_reference_t * ptr = nullptr; ptr += 1; // warning mitigation