enum class Color
{
    RED,
    GREEN,
    BLUE,
    totalNum
};

void func(int in)
{
    Color color = static_cast<Color>(in);
    switch(color)
    {
        case Color::RED:
        break;
        ...
    }
}

上記のようなコードなんですが、enumの範囲外(0~3以外)が入力されるかもしれない場合にどうするのが一般的なのでしょうか?
そのままstatic_castしてswitchのdefaultで処理すればいいでしょうか。

ガードを入れるとか?

//ガード
if(in < 0 || in >= totalNum) return;

でもこれだとenumが連続でない場合に複雑になるよな、と悩んでいます。

よろしくお願いします。