我想知道下面是不確定的行爲這是const_cast未定義的行爲?
// 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
是安全的,所以我不確定。
你在問我們! :-)作爲一個利益的問題,你有這樣的真實世界的用例嗎?和你一樣,我一直認爲增加常量不能破壞任何東西。 – 2011-05-11 20:06:24
@unapersson啊我剛剛讀了最後一個C++ 0x規範,結果證明它有答案!我今天正在和我的同事討論這個問題,他爲「T *」添加了「const」作爲interator適配器,並遇到了一個問題,要求進行這種隱式轉換。 – 2011-05-11 20:08:12
我覺得這很好,我在這裏看不到任何危險。 – 2011-05-11 20:10:07