Вопрос в том, «почему вас это смущает?»
Синтаксис взят из грамматики спецификаторов объявлений в C ++, которая является очень общей и используется для многих вещей в C ++. Порядок указателей объявлений не имеет значения. Посмотрите на это:
int virtual f() const, *g(int);
int ptr1, *ptr2;
int typedef const *name1, name2;
Это эквивалентно:
virtual int f() const;
virtual int* g(int);
int ptr1;
int *ptr2;
typedef const int* name1;
typedef const int name2;
Если вы посмотрите на них достаточно долго, вы обнаружите, что синтаксис фактически одинаков и логичен. Также может помочь чтение грамматики C ++.