Да, это следствие полностью обратного синтаксиса объявления типа C. Это похоже на то, как при выполнении typedef для массива вы пишете: typedef int myArrayType[3];
, с [3]
после нового имени типа, а не с оригиналом.
Если вы действительно умны, вы можете использовать {std,tr1,boost}::array
- в любом случае стоит подумать - так что в итоге вы получите:
array<SomeEnumeratedId, SOME_CONSTANT_VALUE>& SomeClass::SomeMethod() const;
вместо.
Обходные пути с typedefs (исследуются в других ответах) связаны, хотя и не совсем эквивалентны, поскольку {std,tr1,boost}::array
являются обертками, а не просто typedefs.