]> git.ipfire.org Git - thirdparty/gcc.git/commit
PR libstdc++/87704 fix unique_ptr(nullptr_t) constructors
authorJonathan Wakely <jwakely@redhat.com>
Thu, 25 Oct 2018 16:41:54 +0000 (17:41 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Thu, 25 Oct 2018 16:41:54 +0000 (17:41 +0100)
commit74875207d8d36c3b8a0952ccde6b5115a9744f5c
tree346c4a76b65638f75432508284ab39eab74fe4f4
parent7aec289640530c5e1cf9825ce91fc55d1483496d
PR libstdc++/87704 fix unique_ptr(nullptr_t) constructors

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).

Backport from mainline
2018-10-23  Jonathan Wakely  <jwakely@redhat.com>

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.

From-SVN: r265499
libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/unique_ptr.h
libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc
libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc
libstdc++-v3/testsuite/20_util/unique_ptr/cons/incomplete.cc [new file with mode: 0644]