typedef int& T1; typedef const T1 T2; вот этот код в VS2003 приводит к сообщению: warning C4181: qualifier applied to reference type; ignored обрубает скотина const. Это стандарт такой? И что в этом коде такого сложного что компилятор не может его одолеть?
ИМХО: пункт 8.3.2 Стандарта: Cv-qualified references are ill-formed except when the cv-qualifiers are introduced through the use of a typedef (7.1.3) or of a template type argument (14.3), in which case the cv-qualifiers are ignored. [Example: in typedef int& A; const A aref = 3; // ill-formed; // non-const reference initialized with rvalue the type of aref is “reference to int”, not “const reference to int”. ]
Это компилируется в "константный указатель", а не в "указатель на константу", как ты по видимому ожидаешь. Ссылка может быть на константу и не на константу, но понятие константности к самим ссылкам неприменимо, отсюда и ахтунг.