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
そして、ケーキを取るために、C ++ 11では、完全な静的初期化のために何が必要でしょうか?constexpr
S::c
、d
または両方?