Я думаю то, что Lambda
выражение может разрешить и дерево выражений и анонимный делегат, таким образом, можно передать то же описание lambda
выражение и к IEnumerable<T>
дополнительные методы и к IQueryable<T>
дополнительные методы.
Да - требуется, чтобы это выражение было интегральной константой. Стандарт C ++ включает следующий пример:
enum { d, e, f=e+2 };
Как указал Джерри , это законно.
В некоторых редких случаях его раздражает то, что тип счетчиков указывается только после перечисления полностью определено. В стандарте говорится следующее о типах перечислений (7.2 / 4):
Каждое перечисление определяет тип, отличный от всех других типов. После закрывающей скобки спецификатора перечисления каждый перечислитель имеет тип своего перечисления. Перед закрывающей фигурной скобкой тип каждого перечислителя является типом его инициализирующего значения. Если для перечислителя указан инициализатор, значение инициализации имеет тот же тип, что и выражение. Если для первого перечислителя не указан инициализатор, тип является неопределенным целым типом . В противном случае тип совпадает с типом инициализирующего значения предыдущего перечислителя, если только увеличиваемое значение не может быть представлено в этом типе, и в этом случае тип является неопределенным целочисленным типом, достаточным для содержания увеличенного значения.
Выделено предложение может быть показано в следующем примере:
enum E {
E0 // Unspecified type
, E1 = E0-1 // -1, or MAX_UINT
, E2 // 0 or (MAX_UINT+1)
};
В основном, тип, выбранный для E0
, влияет на результирующее значение E1
.
Выделено предложение может быть показано в следующем примере:
enum E {
E0 // Unspecified type
, E1 = E0-1 // -1, or MAX_UINT
, E2 // 0 or (MAX_UINT+1)
};
В основном, тип, выбранный для E0
, влияет на результирующее значение E1
.
Выделено Предложение может быть показано в следующем примере:
enum E {
E0 // Unspecified type
, E1 = E0-1 // -1, or MAX_UINT
, E2 // 0 or (MAX_UINT+1)
};
В основном, тип, выбранный для E0
, влияет на результирующее значение E1
.
Выделено Предложение может быть показано в следующем примере:
enum E {
E0 // Unspecified type
, E1 = E0-1 // -1, or MAX_UINT
, E2 // 0 or (MAX_UINT+1)
};
В основном, тип, выбранный для E0
, влияет на результирующее значение E1
.
Выделено предложение может быть показано в следующем примере:
enum E {
E0 // Unspecified type
, E1 = E0-1 // -1, or MAX_UINT
, E2 // 0 or (MAX_UINT+1)
};
В основном, тип, выбранный для E0
, влияет на результирующее значение E1
.