PR libstdc++/84769
            * include/std/variant (get<_Tp, _Types...>, get_if<_Tp, _Types...>):
            Qualify calls to get<_Np, Types...> and get_if<_Np, _Types...>.

Tested powerpc64le-linux, committed to trunk, and will commit to
gcc-7-branch too.
commit 011ffe188a225ed472ac3e9cd3806dc1ef47b48b
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Fri Mar 9 00:52:57 2018 +0000

    PR libstdc++/84769 qualify std::get and std::get_if to avoid ADL
    
            PR libstdc++/84769
            * include/std/variant (get<_Tp, _Types...>, get_if<_Tp, _Types...>):
            Qualify calls to get<_Np, Types...> and get_if<_Np, _Types...>.

diff --git a/libstdc++-v3/include/std/variant b/libstdc++-v3/include/std/variant
index 85a2428715b..4aba131cb73 100644
--- a/libstdc++-v3/include/std/variant
+++ b/libstdc++-v3/include/std/variant
@@ -891,7 +891,7 @@ namespace __variant
       static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
                    "T should occur for exactly once in alternatives");
       static_assert(!is_void_v<_Tp>, "_Tp should not be void");
-      return get<__detail::__variant::__index_of_v<_Tp, _Types...>>(__v);
+      return std::get<__detail::__variant::__index_of_v<_Tp, _Types...>>(__v);
     }
 
   template<typename _Tp, typename... _Types>
@@ -900,7 +900,7 @@ namespace __variant
       static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
                    "T should occur for exactly once in alternatives");
       static_assert(!is_void_v<_Tp>, "_Tp should not be void");
-      return get<__detail::__variant::__index_of_v<_Tp, _Types...>>(
+      return std::get<__detail::__variant::__index_of_v<_Tp, _Types...>>(
        std::move(__v));
     }
 
@@ -910,7 +910,7 @@ namespace __variant
       static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
                    "T should occur for exactly once in alternatives");
       static_assert(!is_void_v<_Tp>, "_Tp should not be void");
-      return get<__detail::__variant::__index_of_v<_Tp, _Types...>>(__v);
+      return std::get<__detail::__variant::__index_of_v<_Tp, _Types...>>(__v);
     }
 
   template<typename _Tp, typename... _Types>
@@ -919,7 +919,7 @@ namespace __variant
       static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
                    "T should occur for exactly once in alternatives");
       static_assert(!is_void_v<_Tp>, "_Tp should not be void");
-      return get<__detail::__variant::__index_of_v<_Tp, _Types...>>(
+      return std::get<__detail::__variant::__index_of_v<_Tp, _Types...>>(
        std::move(__v));
     }
 
@@ -958,7 +958,8 @@ namespace __variant
       static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
                    "T should occur for exactly once in alternatives");
       static_assert(!is_void_v<_Tp>, "_Tp should not be void");
-      return get_if<__detail::__variant::__index_of_v<_Tp, _Types...>>(__ptr);
+      return std::get_if<__detail::__variant::__index_of_v<_Tp, _Types...>>(
+         __ptr);
     }
 
   template<typename _Tp, typename... _Types>
@@ -969,7 +970,8 @@ namespace __variant
       static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
                    "T should occur for exactly once in alternatives");
       static_assert(!is_void_v<_Tp>, "_Tp should not be void");
-      return get_if<__detail::__variant::__index_of_v<_Tp, _Types...>>(__ptr);
+      return std::get_if<__detail::__variant::__index_of_v<_Tp, _Types...>>(
+         __ptr);
     }
 
   struct monostate { };

Reply via email to