Из того, что я понял, объявления/инициализации в С++ представляют собой инструкции с "базовым типом", за которыми следует разделенный запятыми список деклараторов.
Рассмотрим следующие объявления:
int i = 0, *const p = &i; // Legal, the so-called base type is 'int'.
// i is an int while p is a const pointer to an int.
int j = 0, const c = 2; // Error: C++ requires a type specifier for all declarations.
// Intention was to declare j as an int and c an as const int.
int *const p1 = nullptr, i1 = 0; // p1 is a const pointer to an int while i1 is just an int.
int const j1 = 0, c1 = 2; // Both j1 and c1 are const int.
Является ли const int
базовым типом или составным типом?
Из ошибки во втором объявлении выше, он кажется базовым. Если это так, то как насчет первой декларации?
Иными словами, если первое утверждение является законным, почему не второе? Кроме того, почему поведение отличается от третьего и четвертого утверждений?