several assertions C89とC++ 03は厳密なエイリアシング規則を定義しています。私は、しかし、標準でその特定のビットを見つけることができません。私の理解は、C99では厳密なエイリアシング規則が追加されたということでした。C89またはC++ 03は厳密なエイリアシング規則を定義していますか?
答えて
C++ 03標準は、§3.10 [basic.lval] p15
下以下を有する:
プログラムが動作が未定義である次のいずれかのタイプ以外の左辺値を介してオブジェクトの格納された値にアクセスしようとする場合48):
- オブジェクトの動的な型、
- オブジェクトの動的な型のCV修飾バージョン、
- オブジェクトの動的な型に相当する符号付きまたは符号なしのタイプであるタイプ、
- オブジェクトの動的型のcv修飾バージョンに対応する符号付きまたは符号なしタイプであるタイプ
- メンバー間で前述のタイプの1つを含む集約型または共用体型(再帰的に、a
- オブジェクトの動的型の(おそらくcv修飾された)基本クラス型である型、
- char型またはunsigned char型。サブクエリまたは包含された共用体のメンバ。
脚注:
48)は、このリストの目的は、オブジェクトがまたはエイリアスされないことがあり得る、それらの状況を特定することである。
This siteも、他の規格のセクションを記載している。
質問であなたの答えを明示的に選んだので、これをチェックしてください。 –
このテキストはEXPRESSIONS§3.3、C89で存在する:
:
オブジェクトは は、以下のタイプの1つを有することのみ左辺値によってアクセスその格納された 値を持たなければなりませんオブジェクトの宣言された型、
宣言されたオブジェクトの型 の修飾バージョン
符号付きまたは符号なし 型がオブジェクトの
宣言された型に対応しているタイプ、符号付きまたは符号なし タイプの
修飾バージョンに対応しているタイプ宣言された型のオブジェクトの 、は、上記
のうちの1つを含むことを凝集または共用タイプ(再帰的に 、
subaggregateまたは含まれる共用体のメンバを含む)、メンバー間のタイプ、または文字タイプ。制約は未定義の動作につながる「もの」、その許可エイリアシング規則のセットは、このテキストから導出することができるの
違反。
C89の3.3、C++ 03の3.10/15。
どちらの脚注にも、「このリストの目的は、オブジェクトにエイリアスが付いているかどうかを示すことです」という脚注があります。
愚かなctrl-f! (私は "エイリアス"という単語を検索しました!正直!) –
- 1. 厳密なエイリアシング規則違反
- 2. 厳密なエイリアシング規則でこれはいいですか?
- 3. このコードは厳密なエイリアシング規則に違反していますか?
- 4. このポインタキャストは厳密なエイリアシング規則を破棄しますか?
- 5. Visual C++は "厳密なエイリアシング"をサポートしていますか?
- 6. 警告!逆参照型のペーンドポインタは厳密なエイリアシング規則を破棄します[-Wstrict-aliasing]
- 7. 厳密なエイリアシング違反ですか?
- 8. char配列を別の型にキャストすると、厳密なエイリアシング規則に違反しますか?
- 9. 厳密なエイリアシングは矛盾しているようです
- 10. char配列から*をキャストするときの厳密なエイリアシング規則は何ですか?
- 11. 厳格なエイリアシング規則と配置の新
- 12. 厳密なエイリアシングのパフォーマンス上のメリット
- 13. 厳密なエイリアシング例外説明
- 14. この厳密なエイリアシングはどのようにして未定義の動作ですか?
- 15. コンパイル時に「厳密なエイリアシング」を検出する方法は?
- 16. 厳密なエイリアシングとstd :: arrayとCスタイルの配列
- 17. c - 厳密なエイリアシング警告の処理方法
- 18. haskellでの厳密なまたは非厳密な乗算?
- 19. C++ 11での厳密なエイリアシングでは、char *に_write_、エイリアスの非文字*から_read_に定義されていますか?
- 20. 派生クラスへのポインタを介してクラスオブジェクトにアクセスすると、厳密なエイリアシング規則が破棄されますか?
- 21. 浮動小数点ビットと厳密なエイリアシング
- 22. g ++の厳密なエイリアシング警告を有効にする
- 23. タイプ間接参照型punnedポインタは、私は、このコードでは(「厳格なエイリアシング規則を破るだろうタイプの間接参照型punnedポインタを」)警告コンパイラを持っている厳格なエイリアシング規則
- 24. STM32 SPIのハードウェアと厳密なエイリアシングの警告
- 25. .Net/C#では、厳密に型指定されていますか?
- 26. C#/ Javaでは、postfixの自己割り当ての動作が厳密に定義されていますか?
- 27. パンダの厳密な正規表現は置き換えます
- 28. ポインタのキャスティングは実際に厳密なエイリアシングを解除しますか?次のコードで
- 29. pythonデコレータはデコレータパターンを厳密に実装していますか?
- 30. は、プロトコルバールでClassを厳密に強制していますか?
[別の質問への回答で]エイリアシングの有効な形式を列挙したC++ 03 3.10/15の全体を引用しました。(http://stackoverflow.com/questions/4807643/container-covariance-in -c/4807726#4807726)。 –