Commit 5dbbf899 by Jonathan Wakely Committed by Jonathan Wakely

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...>.

From-SVN: r258376
parent 311735db
2018-03-09 Jonathan Wakely <jwakely@redhat.com> 2018-03-09 Jonathan Wakely <jwakely@redhat.com>
PR libstdc++/84769
* include/std/variant (get<_Tp, _Types...>, get_if<_Tp, _Types...>):
Qualify calls to get<_Np, Types...> and get_if<_Np, _Types...>.
src/filesystem/ops.cc (create_dir): Pass error_code to is_directory. src/filesystem/ops.cc (create_dir): Pass error_code to is_directory.
src/filesystem/std-ops.cc (create_dir): Likewise. src/filesystem/std-ops.cc (create_dir): Likewise.
......
...@@ -891,7 +891,7 @@ namespace __variant ...@@ -891,7 +891,7 @@ namespace __variant
static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
"T should occur for exactly once in alternatives"); "T should occur for exactly once in alternatives");
static_assert(!is_void_v<_Tp>, "_Tp should not be void"); 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> template<typename _Tp, typename... _Types>
...@@ -900,7 +900,7 @@ namespace __variant ...@@ -900,7 +900,7 @@ namespace __variant
static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
"T should occur for exactly once in alternatives"); "T should occur for exactly once in alternatives");
static_assert(!is_void_v<_Tp>, "_Tp should not be void"); 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)); std::move(__v));
} }
...@@ -910,7 +910,7 @@ namespace __variant ...@@ -910,7 +910,7 @@ namespace __variant
static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
"T should occur for exactly once in alternatives"); "T should occur for exactly once in alternatives");
static_assert(!is_void_v<_Tp>, "_Tp should not be void"); 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> template<typename _Tp, typename... _Types>
...@@ -919,7 +919,7 @@ namespace __variant ...@@ -919,7 +919,7 @@ namespace __variant
static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
"T should occur for exactly once in alternatives"); "T should occur for exactly once in alternatives");
static_assert(!is_void_v<_Tp>, "_Tp should not be void"); 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)); std::move(__v));
} }
...@@ -958,7 +958,8 @@ namespace __variant ...@@ -958,7 +958,8 @@ namespace __variant
static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
"T should occur for exactly once in alternatives"); "T should occur for exactly once in alternatives");
static_assert(!is_void_v<_Tp>, "_Tp should not be void"); 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> template<typename _Tp, typename... _Types>
...@@ -969,7 +970,8 @@ namespace __variant ...@@ -969,7 +970,8 @@ namespace __variant
static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
"T should occur for exactly once in alternatives"); "T should occur for exactly once in alternatives");
static_assert(!is_void_v<_Tp>, "_Tp should not be void"); 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 { }; struct monostate { };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment