PR libstdc++/84769 qualify std::get and std::get_if to avoid ADL
Jonathan Wakely
jwakely.gcc@gmail.com
Fri Mar 9 01:11:00 GMT 2018
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.
-------------- next part --------------
commit 011ffe188a225ed472ac3e9cd3806dc1ef47b48b
Author: Jonathan Wakely <jwakely@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 { };
More information about the Libstdc++
mailing list