次の C++ 疑似コードを検討してください。
// Pointer to contiguous memory block suitably aligned to contain
// an array of type T. Possibly obtained via std::malloc or std::aligned_storage.
void *buffer = ...;
// Now cast as T pointer.
T *ptr = static_cast<T *>(buffer);
// Do some pointer arithmetics. For instance, construct the first two
// elements of the array.
::new (ptr) T();
::new (ptr + 1) T();
// etc.
これは合法ですか?キャスト後にポインター演算を行うことについて、標準は何と言っていますか? C++11 標準の 5.7/5 では、配列オブジェクトの要素へのポインターの算術演算について説明していますが、連続したメモリ ブロックを配列と見なすことはできますか?