https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99006
Bug ID: 99006
Summary: make_shared<T[]> silently works
Product: gcc
Version: 11.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libstdc++
Assignee: unassigned at gcc dot gnu.org
Reporter: Darrell.Wright at gmail dot com
Target Milestone: ---
std::make_shared<T[]> in libstdc++ prior to c++20 doesn't fail.
The minimal example is
#include <memory>
int func( ) {
auto sp = std::make_shared<int[]>( 55 );
return *sp.get( );
}
will return 55;
libc++ removes it from the overload set and MS STL fails.
https://gcc.godbolt.org/z/PaW6WY
With T = int[], I think
https://timsong-https://timsong-cpp.github.io/cppwp/n4659/util.smartptr.shared.create#1
should make this not work.