libstdc++: Reject std::make_shared<T[]> [PR 99006]
authorJonathan Wakely <jwakely@redhat.com>
Thu, 22 Apr 2021 14:46:51 +0000 (15:46 +0100)
committerJonathan Wakely <jwakely@redhat.com>
Thu, 22 Apr 2021 14:49:27 +0000 (15:49 +0100)
commit55650236cd97d81f42f9fdb4f6bcb12babafe51f
tree9cc5149af0c3dd39c964afdbb3ecf58defda6375
parent3bb6a9c01f1e9b5daf9b37fca57e90804ba90d66
libstdc++: Reject std::make_shared<T[]> [PR 99006]

Prior to C++20 it should be ill-formed to use std::make_shared with an
array type (and we don't support the C++20 feature to make it valid yet
anyway).

libstdc++-v3/ChangeLog:

PR libstdc++/99006
* include/bits/shared_ptr.h (allocate_shared): Assert that _Tp
is not an array type.
* include/bits/shared_ptr_base.h (__allocate_shared): Likewise.
* testsuite/20_util/shared_ptr/creation/99006.cc: New test.
libstdc++-v3/include/bits/shared_ptr.h
libstdc++-v3/include/bits/shared_ptr_base.h
libstdc++-v3/testsuite/20_util/shared_ptr/creation/99006.cc [new file with mode: 0644]