Рассмотрим этот код С++ 11:
enum class Color : char { red = 0x1, yellow = 0x2 }
// ...
char *data = ReadFile();
Color color = static_cast<Color>(data[0]);
Предположим, что данные [0] на самом деле 100. Что такое цвет, установленный в соответствии со стандартом? В частности, если я позже сделаю
switch (color) {
// ... red and yellow cases omitted
default:
// handle error
break;
}
Стандарт гарантирует, что значение по умолчанию будет удалено? Если нет, то какой правильный, самый эффективный, самый элегантный способ проверить ошибку здесь?
EDIT:
Как бонус, делает ли стандарт какие-либо гарантии по этому поводу, но с простым перечислением?