[libcxx-commits] [PATCH] D85420: [libcxx/variant] Introduce `switch`-based mechanism for `std::visit`.

Michael Park via libcxx-commits libcxx-commits at lists.llvm.org
Mon Aug 17 10:34:07 PDT 2020


Hi Mehdi,

I've submitted https://reviews.llvm.org/D86006 and I believe that will be
the correct fix for this issue.
It was likely incorrectly returning the stream by value as a return type
coming out of `visit`.

On Sat, Aug 15, 2020 at 3:29 PM Mehdi AMINI via Phabricator <
reviews at reviews.llvm.org> wrote:

> mehdi_amini added a comment.
>
> I think this change is breaking one of our uses right now:
>
>   include/c++/v1/variant:599:16: error: call to deleted constructor of
> 'std::__u::basic_ostream<char>'
>           return __invoke_constexpr(
>                  ^~~~~~~~~~~~~~~~~~~
>   include/c++/v1/variant:618:59: note: in instantiation of function
> template specialization
> 'std::__u::__variant_detail::__visitation::__base::__visit_alt_impl(index_sequence<0UL>,
> std::__u::__variant_detail::__visitation::__variant::__value_visitor<YYY &>
> &&, const std::__u::__variant_detail::__impl<XXX, ZZZ> &)::(anonymous
> class)::operator()<std::__u::integral_constant<unsigned long, 1>>'
> requested here
>           _LIBCPP_VARIANT_CASES(_LIBCPP_VARIANT_SWITCH_MAX,
> _LIBCPP_VARIANT_CASE)
>                                                             ^
>   include/c++/v1/variant:586:14: note: in instantiation of function
> template specialization
> 'std::__u::__variant_detail::__visitation::__base::__visit_alt_impl<0,
> std::__u::__variant_detail::__visitation::__variant::__value_visitor<YYY
> &>, const std::__u::__variant_detail::__impl<XXX, ZZZ> &>' requested here
>         return __visit_alt_impl(index_sequence_for<_Vs...>{},
>                ^
>   include/c++/v1/variant:645:20: note: in instantiation of function
> template specialization
> 'std::__u::__variant_detail::__visitation::__base::__visit_alt<,
> std::__u::__variant_detail::__visitation::__variant::__value_visitor<YYY
> &>, const std::__u::__variant_detail::__impl<XXX, ZZZ> &>' requested here
>       return __base::__visit_alt(_VSTD::forward<_Vis>(__vis),
>                      ^
>   include/c++/v1/variant:662:12: note: in instantiation of function
> template specialization
> 'std::__u::__variant_detail::__visitation::__variant::__visit_alt<std::__u::__variant_detail::__visitation::__variant::__value_visitor<YYY
> &>, const std::__u::variant<XXX, ZZZ> &>' requested here
>       return __visit_alt(__make_value_visitor(_VSTD::forward<_Vis>(__vis)),
>              ^
>   include/c++/v1/variant:1685:21: note: in instantiation of function
> template specialization
> 'std::__u::__variant_detail::__visitation::__variant::__visit_value<YYY &,
> const std::__u::variant<XXX, ZZZ> &>' requested here
>     return __variant::__visit_value(_VSTD::forward<_Vis>(__vis),
>                       ^
>
> I don't know if this trace is enough to figure is there is an issue
> upstream?
>
>
> Repository:
>   rG LLVM Github Monorepo
>
> CHANGES SINCE LAST ACTION
>   https://reviews.llvm.org/D85420/new/
>
> https://reviews.llvm.org/D85420
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20200817/6b218587/attachment.html>


More information about the libcxx-commits mailing list