[PATCH] PR libstdc++/87809 avoid invalid expressions in exception specifications

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[PATCH] PR libstdc++/87809 avoid invalid expressions in exception specifications

Jonathan Wakely-3
If the allocator isn't default constructible then checking if the
default constructor throws in an exception specification makes the
declaration invalid. Use the type trait instead.

        PR libstdc++/87809
        * include/bits/forward_list.h (_Fwd_list_impl::_Fwd_list_impl()): Use
        trait in exception-specification instead of possibly invalid
        expression.
        * include/bits/stl_bvector.h (_Bvector_impl::_Bvector_impl()):
        Likewise.
        * include/bits/stl_list.h (_List_impl::_List_impl()): Likewise.
        * include/bits/stl_vector.h (_Vector_impl::_Vector_impl()): Likewise.
        * testsuite/23_containers/forward_list/cons/87809.cc: New test.
        * testsuite/23_containers/list/cons/87809.cc: New test.
        * testsuite/23_containers/vector/bool/cons/87809.cc: New test.
        * testsuite/23_containers/vector/cons/87809.cc: New test.

Tested powerpc64le-linux, committed to trunk.

This needs to be backported to gcc-8-branch as well.



patch.txt (9K) Download Attachment