aboutsummaryrefslogtreecommitdiff
path: root/libobjc
diff options
context:
space:
mode:
authorVille Voutilainen <ville.voutilainen@gmail.com>2019-03-06 14:56:05 +0200
committerVille Voutilainen <ville@gcc.gnu.org>2019-03-06 14:56:05 +0200
commit669a6fdcb436ae81f7621c35d90f7c41ed2117a7 (patch)
treeb25fdd4abd5da8fa208491e8d36b74e2751f0ea3 /libobjc
parent99447f700d170f7d15d84e246706c92635f11248 (diff)
downloadgcc-669a6fdcb436ae81f7621c35d90f7c41ed2117a7.zip
gcc-669a6fdcb436ae81f7621c35d90f7c41ed2117a7.tar.gz
gcc-669a6fdcb436ae81f7621c35d90f7c41ed2117a7.tar.bz2
Rewrite variant, also PR libstdc++/85517
* include/std/variant (__do_visit): New. (__variant_cast): Likewise. (__variant_cookie): Likewise. (__erased_*): Remove. (_Variant_storage::_S_vtable): Likewise. (_Variant_storage::__M_reset_impl): Adjust to use __do_visit. (_Variant_storage::__M_reset): Adjust. (__variant_construct): New. (_Copy_ctor_base(const _Copy_ctor_base&)): Adjust to use __variant_construct. (_Move_ctor_base(_Move_ctor_base&&)): Likewise. (_Move_ctor_base::__M_destructive_copy): New. (_Move_ctor_base::__M_destructive_move): Adjust to use __variant_construct. (_Copy_assign_base::operator=): Adjust to use __do_visit. (_Copy_assign_alias): Adjust to check both copy assignment and copy construction for triviality. (_Move_assign_base::operator=): Adjust to use __do_visit. (_Multi_array): Add support for visitors that accept and return a __variant_cookie. (__gen_vtable_impl::_S_apply_all_alts): Likewise. (__gen_vtable_impl::_S_apply_single_alt): Likewise. (__gen_vtable_impl::__element_by_index_or_cookie): New. Generate a __variant_cookie temporary for a variant that is valueless and.. (__gen_vtable_impl::__visit_invoke): ..adjust here. (__gen_vtable::_Array_type): Conditionally make space for the __variant_cookie visitor case. (__variant_construct_by_index): New. (get_if): Adjust to use std::addressof. (relops): Adjust to use __do_visit. (variant): Add __variant_cast and __variant_construct_by_index as friends. (variant::emplace): Use _M_reset() and __variant_construct_by_index instead of self-destruction. (variant::swap): Adjust to use __do_visit. (visit): Reimplement in terms of __do_visit. (__variant_hash_call_base_impl::operator()): Adjust to use __do_visit. * testsuite/20_util/variant/compile.cc: Adjust. * testsuite/20_util/variant/run.cc: Likewise. From-SVN: r269422
Diffstat (limited to 'libobjc')
0 files changed, 0 insertions, 0 deletions