https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110594
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- converting a size_t to int64_t is a narrowing conversion, try it without a constant value and you'll get an error: https://godbolt.org/z/rb6jrr4xq That's what the SFINAE check for _Arr does, so your {size_t(1)} is not equivalent and your assumptions based on that are incorrect.