[PATCH] Qualify std::__invoke in <variant> to prevent ADL

Jonathan Wakely jwakely@redhat.com
Tue May 15 12:04:00 GMT 2018


Calling unqualified __invoke can't find the wrong function, because
users can't use that name in their own namespaces, but qualifying it
should make name lookup slightly faster.

	* include/std/variant (__gen_vtable_impl::__visit_invoke): Qualify
	__invoke to prevent ADL.

Tested powerpc64le-linux, committed to trunk.

-------------- next part --------------
commit c2f226ebd16d0f2f6cba92cd87f55282697bbd3a
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue May 15 01:05:39 2018 +0100

    Qualify std::__invoke in <variant> to prevent ADL
    
            * include/std/variant (__gen_vtable_impl::__visit_invoke): Qualify
            __invoke to prevent ADL.

diff --git a/libstdc++-v3/include/std/variant b/libstdc++-v3/include/std/variant
index 40b3b566938..c0212404bb2 100644
--- a/libstdc++-v3/include/std/variant
+++ b/libstdc++-v3/include/std/variant
@@ -838,9 +838,8 @@ namespace __variant
       decltype(auto)
       static constexpr __visit_invoke(_Visitor&& __visitor, _Variants... __vars)
       {
-	return __invoke(std::forward<_Visitor>(__visitor),
-			std::get<__indices>(
-			    std::forward<_Variants>(__vars))...);
+	return std::__invoke(std::forward<_Visitor>(__visitor),
+	    std::get<__indices>(std::forward<_Variants>(__vars))...);
       }
 
       static constexpr auto


More information about the Libstdc++ mailing list