silencing warning "control reaches end of non-void function"

Lionel Elie Mamane lionel at mamane.lu
Sun Jul 30 17:53:21 UTC 2017


On Sun, Jul 30, 2017 at 07:26:02PM +0200, Lionel Elie Mamane wrote:

> Consider:

> enum t {a, b};
> 
> OUString f(t i)
> {
>   switch(i)
>   {
>   case t::a;
>     return "it was an a";
>   case t::b;
>     return "it was a b";
>   }
> }
> 

> gcc -Werror fails with
> error: control reaches end of non-void function [-Werror=return-type]

An Internet search
https://stackoverflow.com/questions/33607284/control-reaches-end-of-non-void-function-with-fully-handled-case-switch-over-a
teaches me that it is legal to construct a value of an enum type that
is not among the enumerated values (when the number of enumerated
values is not a power of two). <sigh>

I added the fake return. I prefer not to put a default case in the
switch, so that the "switch is not exhaustive over enum" warning can
still appear.

-- 
Lionel


More information about the LibreOffice mailing list