Commit fe69bee3 by Jonathan Wakely Committed by Jonathan Wakely

Remove check for impossible condition in std::variant::index()

The __index_type is only ever unsigned char or unsigned short, so not
the same type as size_t.

	* include/std/variant (variant::index()): Remove impossible case.

From-SVN: r276100
parent a7701dd1
2019-09-24 Jonathan Wakely <jwakely@redhat.com> 2019-09-24 Jonathan Wakely <jwakely@redhat.com>
* include/std/variant (variant::index()): Remove impossible case.
PR libstdc++/91871 PR libstdc++/91871
* testsuite/util/testsuite_hooks.h * testsuite/util/testsuite_hooks.h
(conversion::iterator_to_const_iterator()): Do not return an invalid (conversion::iterator_to_const_iterator()): Do not return an invalid
......
...@@ -1520,9 +1520,7 @@ namespace __variant ...@@ -1520,9 +1520,7 @@ namespace __variant
constexpr size_t index() const noexcept constexpr size_t index() const noexcept
{ {
using __index_type = typename _Base::__index_type; using __index_type = typename _Base::__index_type;
if constexpr (is_same_v<__index_type, size_t>) if constexpr (__detail::__variant::__never_valueless<_Types...>())
return this->_M_index;
else if constexpr (__detail::__variant::__never_valueless<_Types...>())
return this->_M_index; return this->_M_index;
else if constexpr (sizeof...(_Types) <= __index_type(-1) / 2) else if constexpr (sizeof...(_Types) <= __index_type(-1) / 2)
return make_signed_t<__index_type>(this->_M_index); return make_signed_t<__index_type>(this->_M_index);
......
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