diff --git a/lang/cpp20/implicit_creation_of_objects_for_low-level_object_manipulation.md b/lang/cpp20/implicit_creation_of_objects_for_low-level_object_manipulation.md index 9ade0289a..ece3e8084 100644 --- a/lang/cpp20/implicit_creation_of_objects_for_low-level_object_manipulation.md +++ b/lang/cpp20/implicit_creation_of_objects_for_low-level_object_manipulation.md @@ -348,7 +348,7 @@ void process(Stream *stream) { } ``` -`Foo`も`Bar`も*implicit-lifetime types*だとして、以前のこのコードに対して`Stream::read()`が次のように実装されている場合 +`Foo`も`Bar`も*implicit-lifetime types*だとして、このコードに対して`Stream::read()`が次のように実装されている場合 ```cpp unique_ptr Stream::read() { @@ -363,7 +363,7 @@ unique_ptr Stream::read() { ただし、`process()`内の各分岐においては、返された`buffer`ポインタ(`char(*)[]`)からそれぞれの場合で適切なオブジェクト(`Foo`/`Bar`)へのポインタを、[`std::launder()`](/reference/new/launder.md)を用いて取得する必要がある。 -`reinterpret_cast`はポインタ型の変換のみを行うが、型変換だけではそのポインタはその領域に生存期間内にあるオブジェクトと必ずしもリンクしない。`std::launder()`は、渡されたポインタの領域で生存期間内にあるオブジェクトへのポインタを生成して返す関数であり、これを用いることで暗黙的に構築されたオブジェクトへの適切なポインタを得ることができる。 +`reinterpret_cast`はポインタ型の変換のみを行うが、型変換だけではそのポインタはその領域で生存期間内にあるオブジェクトと必ずしもリンクしない。`std::launder()`は、渡されたポインタの領域で生存期間内にあるオブジェクトへのポインタを生成して返す関数であり、これを用いることで暗黙的に構築されたオブジェクトへの適切なポインタを得ることができる。 ### 動的配列の実装 @@ -389,9 +389,9 @@ unique_ptr Stream::read() { などが考案されていた。 -最終的には、暗黙的なオブジェクト構築のように、C++のオブジェクトモデルを修正する形でこの問題を解消することになった。 +最終的には、C++のオブジェクトモデルを修正する暗黙的なオブジェクト構築によってこの問題を解消することになった。 -ただし、2番目の特殊なライブラリ関数もC++23で`std::start_lifetime_as()`として追加されている。 +なお、2番目の特殊なライブラリ関数もC++23で`std::start_lifetime_as()`として追加されている。 ## 関連項目