Во-первых, примеры кода:
Случай 1:
typedef char* CHARS;
typedef CHARS const CPTR; // constant pointer to chars
Текст, заменяющий CHARS, становится:
typedef char* const CPTR; // still a constant pointer to chars
Случай 2:
typedef char* CHARS;
typedef const CHARS CPTR; // constant pointer to chars
Текст, заменяющий CHARS, становится:
typedef const char* CPTR; // pointer to constant chars
В случае 2 после текстовой замены CHARS значение typedef изменилось. Почему это так? Как С++ интерпретирует это определение?