Почему decltype удаляет const из возвращаемых типов для встроенных типов?

Как общее правило,decltype сохраняет постоянство:

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

Но дляconst возвращаемые типы, которые возвращают фундаментальные типы,decltype кажется, броситьconst далеко:

const int makeCI();            // factory

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

Почемуdecltype сбросить константность в этом случае? Я имею в виду вопрос двумя способами:

Какая часть стандарта определяет это поведение?Какова мотивация для определения поведения таким образом?

Благодарю.

Ответы на вопрос(1)

Ваш ответ на вопрос