https://gcc.gnu.org/bugzilla/show_bug.cgi?id=50486
--- Comment #3 from Manuel López-Ibáñez <manu at gcc dot gnu.org> --- Clang warns: <source>:16:18: warning: implicit conversion changes signedness: 'int' to 'enum e' [-Wsign-conversion] return a(-1); ~ ^~ Not sure why gcc doesn't but it should.