]> git.ipfire.org Git - thirdparty/gcc.git/commit - libstdc++-v3/ChangeLog
Fix visit<R> for variant.
authorville <ville@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 8 Apr 2019 19:45:48 +0000 (19:45 +0000)
committerville <ville@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 8 Apr 2019 19:45:48 +0000 (19:45 +0000)
commitff7d433d394502547c2cab0f1d3547d78d18c1fe
treebfb9c683a02f50f55e7e54b9010f95a168dd8b3e
parent67ecd3ae8002246a903c435ecb7454eeae105235
Fix visit<R> for variant.

* include/std/variant (__do_visit): Add a template parameter
for enforcing same return types for visit.
(__gen_vtable_impl): Likewise.
(_S_apply_single_alt): Adjust.
(__visit_invoke_impl): New. Handle casting to void.
(__do_visit_invoke): New. Enforces same return types.
(__do_visit_invoke_r): New. Converts return types.
(__visit_invoke): Adjust.
(__gen_vtable):  Add a template parameter for enforcing
same return types for visit.
* testsuite/20_util/variant/visit_r.cc: Add a test for a visitor with
different return types.
* testsuite/20_util/variant/visit_neg.cc: New. Ensures that
visitors with different return types don't accidentally
compile with regular visitation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@270216 138bc75d-0d04-0410-961f-82ee72b054a4
libstdc++-v3/ChangeLog
libstdc++-v3/include/std/variant
libstdc++-v3/testsuite/20_util/variant/visit_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/variant/visit_r.cc