Тема: Оголошення змінних з використанням const. + Посилання і вказівники
Сиджу в Visual Studio 2013 на C++ (звичайному, без CLR) і вводжу рядок:
int i0 = 0,
const *const i1 = &i0,
const &const i2 = i0,
const *const *const i3 = &i1,
const &&const i4 = 4;
я очікував, що отримаю змінні такі як тут:
int i0 = 0;
int const *const i1 = &i0;
int const &i2 = i0;
int const *const *const i3 = &i1;
int const &&i4 = 4;
але компілятор вирішив інакше:
int i0 = 0;
int *const i1 = &i0;
int &i2 = i0;
int *const *const i3 = &i1;
int &&i4 = 4;
Чому компілятор не бачить першого входження const у всі змінні крім першої ?
Цікаво, що якщо зробити наоборот:
int const i0 = 0,
*const i1 = &i0,
&const i2 = i0,
*const *const i3 = &i1,
&&const i4 = 4;
я очікував:
int const i0 = 0;
int *const i1 = &i0;
int &i2 = i0;
int *const *const i3 = &i1;
int &&i4 = 4;
але компілятор:
int const i0 = 0;
int const *const i1 = &i0;
int const &i2 = i0;
int const *const *const i3 = &i1;
int const &&i4 = 4;
Чи є якась специфікація (описаний стандарт), де можна прочитати чому компілятор так робить ? чи це тільки Visual Studio таке витворяє ?
Хто сидить на інших компіляторах, розкажіть, у Вас таке саме ?
Ви мабуть спитаєте нащо я поставив const після & і &&. Я не знаю, захотілось поекспериментувати.