[PATCH] PR libstdc++/87704 fix unique_ptr(nullptr_t) constructors

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

[PATCH] PR libstdc++/87704 fix unique_ptr(nullptr_t) constructors

Jonathan Wakely-3
Using a delegating constructor to implement these constructors means
that they instantiate the destructor, which requires the element_type to
be complete. In C++11 and C++14 they were specified to be delegating,
but that was changed as part of LWG 2801 so in C++17 they don't require
a complete type (as was intended all along).

        PR libstdc++/87704
        * include/bits/unique_ptr.h (unique_ptr::unique_ptr(nullptr_t)): Do
        not delegate to default constructor.
        (unique_ptr<T[], D>::unique_ptr(nullptr_t)): Likewise.
        * testsuite/20_util/unique_ptr/cons/incomplete.cc: New test.

Tested powerpc64le-linux, committed to trunk. Backports to follow.

patch.txt (3K) Download Attachment