mirror of git://gcc.gnu.org/git/gcc.git
libstdc++: Remove non-void static assertions in variant's std::get [PR111172]
A void template argument would cause a substitution failure when trying
to form a reference for the return type, so the function body would
never be instantiated.
libstdc++-v3/ChangeLog:
PR libstdc++/111172
* include/std/variant (get<T>): Remove !is_void static
assertions.
(cherry picked from commit d19bdf8874
)
This commit is contained in:
parent
0fc5cc6e5a
commit
9847a4e9f0
|
@ -1151,7 +1151,6 @@ namespace __variant
|
||||||
{
|
{
|
||||||
static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
|
static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
|
||||||
"T must occur exactly once in alternatives");
|
"T must occur exactly once in alternatives");
|
||||||
static_assert(!is_void_v<_Tp>, "_Tp must not be void");
|
|
||||||
constexpr size_t __n = std::__find_uniq_type_in_pack<_Tp, _Types...>();
|
constexpr size_t __n = std::__find_uniq_type_in_pack<_Tp, _Types...>();
|
||||||
return std::get<__n>(__v);
|
return std::get<__n>(__v);
|
||||||
}
|
}
|
||||||
|
@ -1162,7 +1161,6 @@ namespace __variant
|
||||||
{
|
{
|
||||||
static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
|
static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
|
||||||
"T must occur exactly once in alternatives");
|
"T must occur exactly once in alternatives");
|
||||||
static_assert(!is_void_v<_Tp>, "_Tp must not be void");
|
|
||||||
constexpr size_t __n = std::__find_uniq_type_in_pack<_Tp, _Types...>();
|
constexpr size_t __n = std::__find_uniq_type_in_pack<_Tp, _Types...>();
|
||||||
return std::get<__n>(std::move(__v));
|
return std::get<__n>(std::move(__v));
|
||||||
}
|
}
|
||||||
|
@ -1173,7 +1171,6 @@ namespace __variant
|
||||||
{
|
{
|
||||||
static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
|
static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
|
||||||
"T must occur exactly once in alternatives");
|
"T must occur exactly once in alternatives");
|
||||||
static_assert(!is_void_v<_Tp>, "_Tp must not be void");
|
|
||||||
constexpr size_t __n = std::__find_uniq_type_in_pack<_Tp, _Types...>();
|
constexpr size_t __n = std::__find_uniq_type_in_pack<_Tp, _Types...>();
|
||||||
return std::get<__n>(__v);
|
return std::get<__n>(__v);
|
||||||
}
|
}
|
||||||
|
@ -1184,7 +1181,6 @@ namespace __variant
|
||||||
{
|
{
|
||||||
static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
|
static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
|
||||||
"T must occur exactly once in alternatives");
|
"T must occur exactly once in alternatives");
|
||||||
static_assert(!is_void_v<_Tp>, "_Tp must not be void");
|
|
||||||
constexpr size_t __n = std::__find_uniq_type_in_pack<_Tp, _Types...>();
|
constexpr size_t __n = std::__find_uniq_type_in_pack<_Tp, _Types...>();
|
||||||
return std::get<__n>(std::move(__v));
|
return std::get<__n>(std::move(__v));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue