以下は未定義動作かどうか疑問に思いました
// Case 1:
int *p = 0;
int const *q = *const_cast<int const* const*>(&p);
// Case 2: (I think this is the same)
int *p = 0;
int const *const *pp = &p;
int const *q = *pp;
int*
これは、あたかもそれがであるかのように読み取ることによる未定義の動作int const*
ですか?未定義の動作だと思いますが、以前const
は一般的に追加するだけで安全だと思っていたので、よくわかりません。