C2 / 03 referência de colapso e cv qualificadores

O código abaixo compila (gcc 4.7.2 ou icc 13) e produz saída "1 2". O que significa queconst qualificador é descartado, i. e.f<int&> tem o tipo de parâmetroint&.

Por que isso acontece? Pelo que entendi, de acordo com o §14.3.1.4:

Se um argumento de modelo para um parâmetro de modeloT nomeia um tipo “referência acv1 S”, Uma tentativa de criar o tipo“ referência acv2 T”Cria o tipo“ referência paracv12 S", Ondecv12 é a união dos cv-quali fi ferscv1 ecv2. Os qualificadores redundantes da cv são ignorados.

const não deve ser descartado. Aqui está o código:

#include <iostream>
using namespace std;

template <typename T>
void f(const T& t)
{
    t++;
}

int main()
{
    int a = 1;

    cout << a;
    f<int&>(a);
    cout << ' ' << a << endl;

    return 0;
}

questionAnswers(2)

yourAnswerToTheQuestion