foo() warns about a default case missing, while foo2() warns about a default case being present when every enum case is already handled. https://godbolt.org/z/WxooaoeMK