On 14/05/19 17:46 +0100, Jonathan Wakely wrote:
This change simplifies visitation for variants, by using INVOKE<R> for the visit<R> form, and explicitly specifying the tag types for raw visitation, instead of inferring them from the return types of the lambda functions used as visitors.
An additional tiny tweak. Tested powerpc64le-linux, committed to trunk.
commit 10724a3fea78ab58b8e2fec3416c940e02739514 Author: Jonathan Wakely <jwak...@redhat.com> Date: Wed May 15 22:01:47 2019 +0100 Qualify calls in std::visit and std::visit<R> * include/std/variant (visit, visit<R>): Qualify calls to __do_visit. diff --git a/libstdc++-v3/include/std/variant b/libstdc++-v3/include/std/variant index dc4bbb7f356..8c710c30de5 100644 --- a/libstdc++-v3/include/std/variant +++ b/libstdc++-v3/include/std/variant @@ -1637,8 +1637,8 @@ namespace __variant using _Tag = __detail::__variant::__deduce_visit_result<_Result_type>; - return __do_visit<_Tag>(std::forward<_Visitor>(__visitor), - std::forward<_Variants>(__variants)...); + return std::__do_visit<_Tag>(std::forward<_Visitor>(__visitor), + std::forward<_Variants>(__variants)...); } #if __cplusplus > 201703L @@ -1649,8 +1649,8 @@ namespace __variant if ((__variants.valueless_by_exception() || ...)) __throw_bad_variant_access("Unexpected index"); - return __do_visit<_Res>(std::forward<_Visitor>(__visitor), - std::forward<_Variants>(__variants)...); + return std::__do_visit<_Res>(std::forward<_Visitor>(__visitor), + std::forward<_Variants>(__variants)...); } #endif