https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89287
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2021-08-27 Ever confirmed|0 |1 Status|UNCONFIRMED |NEW --- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Confirmed. Looks like C++14 changed it to do a conversion to size_t. Obvious workaround: new char[(size_t)S()]; The other thing I noticed is ICC accepts it for C++11 while rejects it for C++98 which is unlike clang which rejects it for both C++98 and C++11. There must have been a C++ defect report ...