Если хочется проверить, совпадает ли значение некоего enum с одним из именованных значений, до сих пор использовалась соответствующая функция:
enum E
{
v0 = 42,
v1 = 4711
};
bool IsEValid (const E value)
{
return value == v0 || value == v1;
}
Неудобно, что нужно не забывать синхронизировать enum c функцией. На помощь приходит
C4062:
// enumerator 'x' in switch of enum 'y' is not handled
#pragma warning (error: 4062)
bool IsEValidSynchronized (const E value)
{
switch (value)
{
case v0:
case v1:
return true;
}
return false;
}
, и теперь добавление или удаление нового именованного значения E приводит к ошибке компиляции, пока не подправлен switch.