https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106837
--- Comment #4 from Ofek Shilon <ofekshilon at gmail dot com> --- This can be tested empirically. Remove the entire build_x_binary_op check, build gcc and run on this snippet. If it builds correctly than the begin/end types are indeed comparable and the emitted error is false.