Avoid redundant runtime checks in std::visit
authorJonathan Wakely <jwakely@redhat.com>
Tue, 2 Oct 2018 14:00:50 +0000 (15:00 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Tue, 2 Oct 2018 14:00:50 +0000 (15:00 +0100)
commit469218a3f9b8f72b38d82dd978ec231ab3de14ef
treea69a6ba487c13ad4ce8f595f485a8f2f0daefdf1
parentf512bf3ee95914b30ba67f80ca42a72ec630738f
Avoid redundant runtime checks in std::visit

Calling std::get will check some static assertions and also do a runtime
check for a valid index before calling __detail::__variant::__get. The
std::visit function already handles the case where any variant has an
invalid index, so __get can be used directly in __visit_invoke.

* include/std/variant (__gen_vtable_impl::__visit_invoke): Call __get
directly instead of get, as caller ensures correct index is used.
(holds_alternative, get, get_if): Remove redundant inline specifiers.
(_VARIANT_RELATION_FUNCTION_TEMPLATE): Likewise.

From-SVN: r264786
libstdc++-v3/ChangeLog
libstdc++-v3/include/std/variant