Parâmetro / argumento de referência não-tipo

Por que o argumento do modelo de uma referência não-tipo não pode ser outra referência (g ++ 4.8.1):

template <int& N> void test() { }

int x = 5;
int& p = x;

int main(){
    test<x>(); //compiles fine
    test<p>(); //error: could not convert template argument 'p' to 'int&'|  
}

Não consigo ver de onde vem o padrãop viola qualquer coisa, estas parecem as seções mais relevantes (N3337):

[14.3.2] [.1] Um argumento-modelo para um parâmetro-modelo não-modelo e não-modelo deve ser um dos seguintes:

- para um parâmetro-modelo não-tipo de tipo integral ou de enumeração, uma expressão constante convertida (5.19) do tipo de parâmetro-modelo; ou

- o nome de um parâmetro-modelo que não seja do tipo; ou

- uma expressão constante (5.19) que designa o endereço de um objeto com duração de armazenamento estático e ligação externa ou interna ou uma função com ligação externa ou interna, incluindo modelos de função e IDs de modelo de função, mas excluindo membros da classe não estáticos, expressos ( ignorando parênteses) como & id-expression, exceto que & pode ser omitido se o nome se referir a uma função ou matriz e deve ser omitido se o parâmetro-modelo correspondente for uma referência; ou .....

[.4]

[Nota: Temporários, lvalues não nomeados e lvalues nomeados sem ligação não são argumentos de modelos aceitáveis quando o parâmetro-modelo correspondente possui um tipo de referência.

[0,5]

- Para um parâmetro de modelo que não seja do tipo de referência de tipo a objeto, nenhuma conversão será aplicada. O tipo referido pela referência pode ser mais qualificado para cv do que o tipo (de outra forma idêntico) do documento de modelo de modelo. O parâmetro template é vinculado diretamente ao argumento template, que deve ser um valor l.

p deve ser considerado um valor não deveria? A única outra coisa em que consegui pensar talvez fosse a falta de ligação para referências, mas adicionandoextern int& p = x também não consertou.

questionAnswers(2)

yourAnswerToTheQuestion