Por que decltype remove const de tipos de retorno para tipos internos?

Como uma regra geral,decltype preserva constness:

const int ci = 0;
decltype(ci)  x;         // x is const int
x = 5;                   // error--x is const

class Gadget{}:

const Gadget makeCG();         // factory

decltype(makeCG()) y1, y2;     // y1 and y2 are const Gadgets
y1 = y2;                       // error--y1 is const

Mas peloconst tipos de retorno que retornam tipos fundamentais,decltype parece jogarconst longe:

const int makeCI();            // factory

decltype(makeCI()) z;          // z is NOT const
z = 5;                         // okay

Porquedecltype descartar constness neste caso? Quero dizer a questão de duas maneiras:

Qual parte do padrão especifica esse comportamento?Qual é a motivação para especificar o comportamento dessa maneira?

Obrigado.

questionAnswers(1)

yourAnswerToTheQuestion