https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87742
--- Comment #4 from Liu Hao <lh_mouse at 126 dot com> --- In my real-world example, 0) the enclosing function is indeterminately recursive, but there is no infinite loop, and 1) `o` has type `size_t`, which is a compile time constant because it is the index of a type in a parameter pack; because the number of elements in the array is the `sizeof...` the parameter pack, in no case will it be out of bound. BTW the cast there is not to `unsigned char` but to an enum whose underlying type is `unsigned char`. Using a wider integer type for it might resolve the problem. Your information is invaluable.