При чтении слайдов о constexpr введение посвящено "неожиданно динамической инициализации с помощью consts". Пример:
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
И чтобы взять торт, в С++ 11, , что должно быть constexpr для полной статической инициализации? S::c, d или оба?