4 ms·
In C++, you get an error at runtime: https://godbolt.org/z/C_JFez https://godbolt.org/z/C_JFez Note though that C++ allows using enums as bitfields, so some fo
by scatters 6y ago
In C++, you get an error at runtime: https://godbolt.org/z/C_JFez https://godbolt.org/z/C_JFez
Note though that C++ allows using enums as bitfields, so some form of loading non-enumerated values has to be allowed.
- coder543 6y ago> In C++, you get an error at runtime Your statement implies that errors for using invalid values are guaranteed at runtime as a feature of the language. That entire statement is incorrect. You really don't get errors... I literally pasted a link to a working, non-erroring example in the comment that you responded to. You clearly saw the code. Did you click "run"? You only get an error at runtime if you add "-fsanitize=undefined" (or "-fsanitize=enum"), where the compiler will inject some code into your binary. But the error doesn't actually stop code execution: it just prints a warning! Here is a link with the sanitizer enabled, and no warning is even printed for using an invalid value: https://godbolt.org/z/NA7FNQ https://godbolt.org/z/NA7FNQ So, not only is the sanitizer not even comprehensive, it's not actually a feature of C++. It's a best-effort feature from the compiler to add a non-standard runtime code sanitizer to your binary. Warnings for using invalid values are not guaranteed.