«Удивительная» константа инициализации из-за порядка определения
При чтениислайды о constexpr введение о«удивительно динамическая инициализация с помощью conts», Пример
struct S {
static const int c;
};
const int d = 10 * S::c;
const int S::c = 5;
Увы, звуковая дорожка отсутствует, как и заметки, поэтому я могу только догадываться, что здесь имеется в виду.
Это правильно, чтоd
«удивительно» инициализируется динамически, потому чтоS::c
определенодо d
? Чтодекларация изS::c
доd
Вероятно, недостаточно, компилятор нуждается в полнойопределение, правильно?
Тем не менее, я подозреваю, что в следующем примереd
было бы быть инициализирован статически?
struct S {
static const int c;
};
const int S::c = 5;
const int d = 10 * S::c; // now _after_ defn of S::c
И взять торт, в C ++ 11,что должно бытьconstexpr
для полной статической инициализации?S::c
, d
или оба?