Я использую enum class
везде в нашем коде.Иногда пространства имен накапливаются, делая код менее читабельным, как это может быть:
_infoSign->setType(ui::InfoSign::Type::Ok);
Я знаю, я мог бы сократить это с помощью оператора using
:
using Type = ui::InfoSign::Type;
_infoSign->setType(Type::Ok);
Недостатком оператора using
является собственное определение Type
.В случае, если имя enum
изменено на Foo
, этот код сохранит имя Type
и должен быть обновлен вручную.
Swift использует интересный способ обработки значений перечисления:
enum CompassPoint {
case north
case south
case east
case west
}
func foo(dir: CompassPoint) {
// ...
}
Для вызова функции компилятор автоматически использует правильный контекст и позволяет очень короткой форме указать значение перечисления:
foo(.north)
Есть или было предложение для C ++для аналогичного синтаксиса?