https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104699
qingzhe huang <nickhuang99 at hotmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |nickhuang99 at hotmail dot com --- Comment #2 from qingzhe huang <nickhuang99 at hotmail dot com> --- (In reply to Jonathan Wakely from comment #1) > It says GNU C, not C++. But in any case, that example works fine for me, as > does the simpler: > > template<typename T> struct S { }; > S<int[0]> s; > > Please provide the info you were asked to provide by https://gcc.gnu.org/bugs https://www.godbolt.org/z/8xa1dTzdM #include <type_traits> static_assert( ! std::is_array<int[0]>::value); And as a directly result, it causes "make_shared" fails with "int[0]" https://www.godbolt.org/z/8nE6qojaE shared_ptr<int[0]> ptr=make_shared<int[0]>(); ... error: request for member '~int [0]' in '* __location', which is of non-class type 'int [0]' 88 | __location->~_Tp(); | ~~~~~~~~~~~~~^~~ This is the direct result of template specialization "is_array<int[0]>" is ill-format code or something.