Ответ 1
От n1256:
6.7.3/4
Если один и тот же квалификатор появляется более одного раза в одном и том же конкретный список квалификаторов, либо напрямую, либо через один или несколько typedefs, поведение такое же, как если бы оно появилось только один раз.
В С++ это должно привести к ошибке.
Из стандарта С++ 03:
7.1.5/1 [dcl.type]
Как правило, не более одного типа-спецификатора допускается в полный decl-specifier-seq декларации. Исключения из это правило:
- const или volatile может быть объединен с любым другим спецификатором типа. Однако избыточные cv-квалификаторы запрещены, за исключением случаев, когда они вводятся с использованием аргументов typedefs (7.1.3) или типа шаблона (14.3), и в этом случае избыточные cv-квалификаторы игнорируются.
От N3797 (С++ 11):
7.1.6/2 [dcl.type]
В качестве общего правила допускается не более одного типа спецификаций в полный decl-spec-fi-seq декларации или в типе-spec-fi-seq или спецификатор типа "конечный тип". Единственными исключениями из этого правила являются: следующее:
— const can be combined with any type specifier except itself.