Как известно, приращение и декрементация enum
в С++ 03 является незаконным, поскольку С++ 03 enum
может быть не непрерывным. Но стандарт С++ 11 представил новую конструкцию enum class
, которая, согласно Википедии, более безопасна для типов, потому что она не построена на любом простом счетном типе. Итак, если у нас есть ограниченный список значений перечисления, мы можем написать что-то вроде
enum class Colors { Black, Blue, White };
// ...
Colors color = Colors::White;
color++;
и будет ли он работать правильно (например, приращение White
вернется Black
, а декремент Black
вернет White
)?
Если мы не сможем написать такой код, знаете ли вы какие-либо поведенческие классы либо из boost
, либо из Qt
, которые предоставляют нам эту функцию (правильное вложение и уменьшение)?