On 6/18/21 6:35 AM, Johan wrote:
On Thursday, 17 June 2021 at 21:41:28 UTC, Steven Schveighoffer wrote:
However, sometimes the data I'm switching on is coming from elsewhere
(i.e. a user), and while I want to enforce that the data is valid
(it's one of the enum values), I don't want to crash the program if
the incoming value is not correct. But final switch doesn't let me
declare a default case (to throw an exception instead).
If I use a non-final switch, then my code might forget to handle one
of the cases.
Any ideas on better ways to handle this?
Perhaps just a non-final switch, with a static assert comparing the
number of cases handled to the number of enum members? (managable if the
number of cases is small and easily countable)
Hm... interesting idea! I don't know how to count the number of cases,
but possibly a CTFE validation would be possible (basically use CTFE to
try all the switch cases, and if any throws an exception, then you found
one that's not handled).
-Steve