質問

それが真実であることをのはconst_cast の「ストップうめき声非constポインタとして扱う」コンパイラに指示するだけの方法ですか?いずれかの例がある場合、のはconst_cast の自体は、実際のマシンコードに変換される?

役に立ちましたか?

解決

おそらく、CONSTポインタは、コンパイラは、いくつかのコードを放出しなければならないであろうその場合、非const一つに異なる表現を持っていたアーキテクチャが存在し得ます。しかし私は、どのようなアーキテクチャを認識していないよ。

他のヒント

いいえ、それだけでコンパイル時にconst属性を削除します。

はconst_castは、単に属性と、何よりものconst性を捨てます。

constタイプの表現を変更しない、特に、T*の表現はT const*と全く同じである。

考えてみます:

int i, 
    * const cpi = &i,
    * const * pcpi = &cpi;
int const * const * pcpci = pcpi; // cpi is now int const*

を同時にcpiの表現はint*介しint const**pcpciを表す。

cpiが初期化されたときに変更するpcpciの表現のための方法はありません。

はもちろん、ポインタオブジェクトは非有意ビットを持っている場合、コンパイラがランダムに反転することができます。特に、const_castポインタの非上位ビットを反転することができ、任意の暗黙の変換もできました。私は、このような場合は、現実の世界に存在しないと思います。

(十分な大きされたオフセットがベース+オフセット)は、2つの異なるビットパターンが同一のアドレス値をもたらす場合に、

同じことが当てはまります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top