回答編集履歴
2
refinement
test
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
|
23
23
|
----
|
24
24
|
|
25
|
-
本題からはそれますが、変換先の型のアライメント要件によっては「未規定(unspecified)のポインタ値」(≠ 未定義(undefined))となる可能性があります。[C++17 [static.cast]/13](https://timsong-cpp.github.io/cppwp/n4659/expr#static.cast-13)
|
25
|
+
本題からはそれますが、変換先のオブジェクト型`T`のアライメント要件によっては「未規定(unspecified)のポインタ値」(≠ 未定義(undefined))となる可能性があります。[C++17 [static.cast]/13](https://timsong-cpp.github.io/cppwp/n4659/expr#static.cast-13)
|
26
26
|
|
27
27
|
|
28
28
|
|
1
appendix
test
CHANGED
@@ -17,3 +17,13 @@
|
|
17
17
|
|
18
18
|
|
19
19
|
> An object pointer can be explicitly converted to an object pointer of a different type. When a prvalue `v` of object pointer type is converted to the object pointer type "pointer to cv `T`", the result is `static_cast<cv T*>(static_cast<cv void*>(v))`. [...]
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
----
|
24
|
+
|
25
|
+
本題からはそれますが、変換先の型のアライメント要件によっては「未規定(unspecified)のポインタ値」(≠ 未定義(undefined))となる可能性があります。[C++17 [static.cast]/13](https://timsong-cpp.github.io/cppwp/n4659/expr#static.cast-13)
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
> A prvalue of type "pointer to cv1 `void`" can be converted to a prvalue of type "pointer to cv2 `T`", where `T` is an object type and cv2 is the same cv-qualification as, or greater cv-qualification than, cv1. If the original pointer value represents the address `A` of a byte in memory and `A` does not satisfy the alignment requirement of `T`, then the resulting pointer value is unspecified.
|