diff --git a/reference/memory/ranges_uninitialized_copy.md b/reference/memory/ranges_uninitialized_copy.md index dea3cc027..381a31874 100644 --- a/reference/memory/ranges_uninitialized_copy.md +++ b/reference/memory/ranges_uninitialized_copy.md @@ -83,6 +83,10 @@ return {std::move(ifirst), ofirst}; * iter_reference_t[link /reference/iterator/iter_reference_t.md] * std::move[link /reference/utility/move.md] +## 例外 + +呼び出すコンストラクタなどから例外がスローされた場合、その例外がこの関数の外側に伝播される前に、その時点で構築済のオブジェクトは全て未規定の順序で破棄される。すなわち、例外がスローされた場合は初期化対象領域は未初期化のままとなる。 + ## 例 ```cpp example diff --git a/reference/memory/ranges_uninitialized_copy_n.md b/reference/memory/ranges_uninitialized_copy_n.md index 74ca629bc..ba3edaebd 100644 --- a/reference/memory/ranges_uninitialized_copy_n.md +++ b/reference/memory/ranges_uninitialized_copy_n.md @@ -63,6 +63,10 @@ return {std::move(t.in).base(), t.out}; * default_sentinel[link /reference/iterator/default_sentinel_t.md] * std::move[link /reference/utility/move.md] +## 例外 + +呼び出すコンストラクタなどから例外がスローされた場合、その例外がこの関数の外側に伝播される前に、その時点で構築済のオブジェクトは全て未規定の順序で破棄される。すなわち、例外がスローされた場合は初期化対象領域は未初期化のままとなる。 + ## 例 ```cpp example diff --git a/reference/memory/ranges_uninitialized_default_construct.md b/reference/memory/ranges_uninitialized_default_construct.md index 1003a3096..7e4ae7e34 100644 --- a/reference/memory/ranges_uninitialized_default_construct.md +++ b/reference/memory/ranges_uninitialized_default_construct.md @@ -62,6 +62,9 @@ return first; * remove_reference_t[link /reference/type_traits/remove_reference.md] * iter_reference_t[link /reference/iterator/iter_reference_t.md] +## 例外 + +呼び出すコンストラクタなどから例外がスローされた場合、その例外がこの関数の外側に伝播される前に、その時点で構築済のオブジェクトは全て未規定の順序で破棄される。すなわち、例外がスローされた場合は初期化対象領域は未初期化のままとなる。 ## 備考 - [`std::vector`](/reference/vector/vector.md)クラスの要素数を変更する操作は、要素を値構築するためゼロ初期化が行われる。その値初期化のコストが気になるような場合に、デフォルト構築することでプログラマの責任で必要な分だけ任意に初期化でき、パフォーマンス向上が期待できるようになる。 diff --git a/reference/memory/ranges_uninitialized_default_construct_n.md b/reference/memory/ranges_uninitialized_default_construct_n.md index 02dd22a2d..e1ff73716 100644 --- a/reference/memory/ranges_uninitialized_default_construct_n.md +++ b/reference/memory/ranges_uninitialized_default_construct_n.md @@ -38,6 +38,9 @@ return uninitialized_default_construct(counted_iterator(first, n), * default_sentinel[link /reference/iterator/default_sentinel_t.md] * base()[link /reference/iterator/counted_iterator/base.md] +## 例外 + +呼び出すコンストラクタなどから例外がスローされた場合、その例外がこの関数の外側に伝播される前に、その時点で構築済のオブジェクトは全て未規定の順序で破棄される。すなわち、例外がスローされた場合は初期化対象領域は未初期化のままとなる。 ## 例 ```cpp example diff --git a/reference/memory/ranges_uninitialized_fill.md b/reference/memory/ranges_uninitialized_fill.md index a4df77097..27c6f35d0 100644 --- a/reference/memory/ranges_uninitialized_fill.md +++ b/reference/memory/ranges_uninitialized_fill.md @@ -66,6 +66,9 @@ return first; * remove_reference_t[link /reference/type_traits/remove_reference.md] * iter_reference_t[link /reference/iterator/iter_reference_t.md] +## 例外 + +呼び出すコンストラクタなどから例外がスローされた場合、その例外がこの関数の外側に伝播される前に、その時点で構築済のオブジェクトは全て未規定の順序で破棄される。すなわち、例外がスローされた場合は初期化対象領域は未初期化のままとなる。 ## 例 ```cpp example diff --git a/reference/memory/ranges_uninitialized_fill_n.md b/reference/memory/ranges_uninitialized_fill_n.md index 8b4a686ce..4490ea569 100644 --- a/reference/memory/ranges_uninitialized_fill_n.md +++ b/reference/memory/ranges_uninitialized_fill_n.md @@ -37,6 +37,9 @@ return uninitialized_fill(counted_iterator(first, n), default_sentinel, x).base( * default_sentinel[link /reference/iterator/default_sentinel_t.md] * base()[link /reference/iterator/counted_iterator/base.md] +## 例外 + +呼び出すコンストラクタなどから例外がスローされた場合、その例外がこの関数の外側に伝播される前に、その時点で構築済のオブジェクトは全て未規定の順序で破棄される。すなわち、例外がスローされた場合は初期化対象領域は未初期化のままとなる。 ## 例 ```cpp example diff --git a/reference/memory/ranges_uninitialized_move.md b/reference/memory/ranges_uninitialized_move.md index 37ae4a90f..d19f2cb1d 100644 --- a/reference/memory/ranges_uninitialized_move.md +++ b/reference/memory/ranges_uninitialized_move.md @@ -84,6 +84,11 @@ return {std::move(ifirst), ofirst}; * std::move[link /reference/utility/move.md] * ranges::iter_move[link /reference/iterator/iter_move.md] +## 例外 + +呼び出すコンストラクタなどから例外がスローされた場合、その例外がこの関数の外側に伝播される前に、その時点で構築済のオブジェクトは全て未規定の順序で破棄される。すなわち、例外がスローされた場合は初期化対象領域は未初期化のままとなる。 + +またその場合、`[ifirst, ilast)`内の一部のオブジェクトは有効だが未規定な状態として残される。 ## 例 ```cpp example diff --git a/reference/memory/ranges_uninitialized_move_n.md b/reference/memory/ranges_uninitialized_move_n.md index 5dbc814bb..0b646f6a3 100644 --- a/reference/memory/ranges_uninitialized_move_n.md +++ b/reference/memory/ranges_uninitialized_move_n.md @@ -63,6 +63,11 @@ return {std::move(t.in).base(), t.out}; * default_sentinel[link /reference/iterator/default_sentinel_t.md] * std::move[link /reference/utility/move.md] +## 例外 + +呼び出すコンストラクタなどから例外がスローされた場合、その例外がこの関数の外側に伝播される前に、その時点で構築済のオブジェクトは全て未規定の順序で破棄される。すなわち、例外がスローされた場合は初期化対象領域は未初期化のままとなる。 + +またその場合、`[ifirst, ifirst + n)`内の一部のオブジェクトは有効だが未規定な状態として残される。 ## 例 ```cpp example diff --git a/reference/memory/ranges_uninitialized_value_construct.md b/reference/memory/ranges_uninitialized_value_construct.md index 32ae40a9f..2d26b966a 100644 --- a/reference/memory/ranges_uninitialized_value_construct.md +++ b/reference/memory/ranges_uninitialized_value_construct.md @@ -62,6 +62,10 @@ return first; * remove_reference_t[link /reference/type_traits/remove_reference.md] * iter_reference_t[link /reference/iterator/iter_reference_t.md] +## 例外 + +呼び出すコンストラクタなどから例外がスローされた場合、その例外がこの関数の外側に伝播される前に、その時点で構築済のオブジェクトは全て未規定の順序で破棄される。すなわち、例外がスローされた場合は初期化対象領域は未初期化のままとなる。 + ## 例 ```cpp example diff --git a/reference/memory/ranges_uninitialized_value_construct_n.md b/reference/memory/ranges_uninitialized_value_construct_n.md index 107825ab3..ba2cf6981 100644 --- a/reference/memory/ranges_uninitialized_value_construct_n.md +++ b/reference/memory/ranges_uninitialized_value_construct_n.md @@ -38,6 +38,10 @@ return uninitialized_value_construct(counted_iterator(first, n), * default_sentinel[link /reference/iterator/default_sentinel_t.md] * base()[link /reference/iterator/counted_iterator/base.md] +## 例外 + +呼び出すコンストラクタなどから例外がスローされた場合、その例外がこの関数の外側に伝播される前に、その時点で構築済のオブジェクトは全て未規定の順序で破棄される。すなわち、例外がスローされた場合は初期化対象領域は未初期化のままとなる。 + ## 例 ```cpp example diff --git a/reference/memory/uninitialized_copy.md b/reference/memory/uninitialized_copy.md index 28c94f27c..0f985d872 100644 --- a/reference/memory/uninitialized_copy.md +++ b/reference/memory/uninitialized_copy.md @@ -51,6 +51,10 @@ namespace std { ## 戻り値 `result` +## 例外 + +呼び出すコンストラクタなどから例外がスローされた場合、その例外がこの関数の外側に伝播される前に、その時点で構築済のオブジェクトは全て未規定の順序で破棄される。すなわち、例外がスローされた場合は初期化対象領域は未初期化のままとなる。 + ### 例 ```cpp example diff --git a/reference/memory/uninitialized_copy_n.md b/reference/memory/uninitialized_copy_n.md index 930e382b2..461b339ba 100644 --- a/reference/memory/uninitialized_copy_n.md +++ b/reference/memory/uninitialized_copy_n.md @@ -54,6 +54,10 @@ namespace std { ## 戻り値 `result` +## 例外 + +呼び出すコンストラクタなどから例外がスローされた場合、その例外がこの関数の外側に伝播される前に、その時点で構築済のオブジェクトは全て未規定の順序で破棄される。すなわち、例外がスローされた場合は初期化対象領域は未初期化のままとなる。 + ### 例 ```cpp example diff --git a/reference/memory/uninitialized_default_construct.md b/reference/memory/uninitialized_default_construct.md index 6fdf2633f..d3b092fa5 100644 --- a/reference/memory/uninitialized_default_construct.md +++ b/reference/memory/uninitialized_default_construct.md @@ -38,6 +38,9 @@ for (; first != last; ++first) ## 戻り値 なし +## 例外 + +呼び出すコンストラクタなどから例外がスローされた場合、その例外がこの関数の外側に伝播される前に、その時点で構築済のオブジェクトは全て未規定の順序で破棄される。すなわち、例外がスローされた場合は初期化対象領域は未初期化のままとなる。 ## 備考 - [`std::vector`](/reference/vector/vector.md)クラスの要素数を変更する操作は、要素を値構築するためゼロ初期化が行われる。その値初期化のコストが気になるような場合に、デフォルト構築することでプログラマの責任で必要な分だけ任意に初期化でき、パフォーマンス向上が期待できるようになる。 diff --git a/reference/memory/uninitialized_default_construct_n.md b/reference/memory/uninitialized_default_construct_n.md index 18919f615..40207f333 100644 --- a/reference/memory/uninitialized_default_construct_n.md +++ b/reference/memory/uninitialized_default_construct_n.md @@ -37,6 +37,9 @@ return first; * addressof[link addressof.md] * iterator_traits[link /reference/iterator/iterator_traits.md] +## 例外 + +呼び出すコンストラクタなどから例外がスローされた場合、その例外がこの関数の外側に伝播される前に、その時点で構築済のオブジェクトは全て未規定の順序で破棄される。すなわち、例外がスローされた場合は初期化対象領域は未初期化のままとなる。 ## 備考 - [`std::vector`](/reference/vector/vector.md)クラスの要素数を変更する操作は、要素を値構築するためゼロ初期化が行われる。その値初期化のコストが気になるような場合に、デフォルト構築することでプログラマの責任で必要な分だけ任意に初期化でき、パフォーマンス向上が期待できるようになる。 diff --git a/reference/memory/uninitialized_fill.md b/reference/memory/uninitialized_fill.md index 59d8a5dcd..ec93f3fb3 100644 --- a/reference/memory/uninitialized_fill.md +++ b/reference/memory/uninitialized_fill.md @@ -46,6 +46,9 @@ namespace std { ## 戻り値 なし +## 例外 + +呼び出すコンストラクタなどから例外がスローされた場合、その例外がこの関数の外側に伝播される前に、その時点で構築済のオブジェクトは全て未規定の順序で破棄される。すなわち、例外がスローされた場合は初期化対象領域は未初期化のままとなる。 ### 例 ```cpp example diff --git a/reference/memory/uninitialized_fill_n.md b/reference/memory/uninitialized_fill_n.md index 5e362ff29..03dd5c848 100644 --- a/reference/memory/uninitialized_fill_n.md +++ b/reference/memory/uninitialized_fill_n.md @@ -48,6 +48,9 @@ namespace std { ## 戻り値 `first` +## 例外 + +呼び出すコンストラクタなどから例外がスローされた場合、その例外がこの関数の外側に伝播される前に、その時点で構築済のオブジェクトは全て未規定の順序で破棄される。すなわち、例外がスローされた場合は初期化対象領域は未初期化のままとなる。 ### 例 ```cpp example diff --git a/reference/memory/uninitialized_move.md b/reference/memory/uninitialized_move.md index b431ad161..bc78fbf44 100644 --- a/reference/memory/uninitialized_move.md +++ b/reference/memory/uninitialized_move.md @@ -46,6 +46,9 @@ for (; first != last; ++result, ++first) ## 戻り値 `result` +## 例外 + +呼び出すコンストラクタなどから例外がスローされた場合、その例外がこの関数の外側に伝播される前に、その時点で構築済のオブジェクトは全て未規定の順序で破棄される。すなわち、例外がスローされた場合は初期化対象領域は未初期化のままとなる。 ### 例 ```cpp example diff --git a/reference/memory/uninitialized_move_n.md b/reference/memory/uninitialized_move_n.md index 3af10f486..26888fc1a 100644 --- a/reference/memory/uninitialized_move_n.md +++ b/reference/memory/uninitialized_move_n.md @@ -46,6 +46,9 @@ for (; n > 0; ++result, (void)++first, --n) ## 戻り値 `{first, result}` +## 例外 + +呼び出すコンストラクタなどから例外がスローされた場合、その例外がこの関数の外側に伝播される前に、その時点で構築済のオブジェクトは全て未規定の順序で破棄される。すなわち、例外がスローされた場合は初期化対象領域は未初期化のままとなる。 ### 例 ```cpp example diff --git a/reference/memory/uninitialized_value_construct.md b/reference/memory/uninitialized_value_construct.md index 4f27319ed..ed381b073 100644 --- a/reference/memory/uninitialized_value_construct.md +++ b/reference/memory/uninitialized_value_construct.md @@ -38,6 +38,9 @@ for (; first != last; ++first) ## 戻り値 なし +## 例外 + +呼び出すコンストラクタなどから例外がスローされた場合、その例外がこの関数の外側に伝播される前に、その時点で構築済のオブジェクトは全て未規定の順序で破棄される。すなわち、例外がスローされた場合は初期化対象領域は未初期化のままとなる。 ### 例 ```cpp example diff --git a/reference/memory/uninitialized_value_construct_n.md b/reference/memory/uninitialized_value_construct_n.md index 5645f1872..f27882d74 100644 --- a/reference/memory/uninitialized_value_construct_n.md +++ b/reference/memory/uninitialized_value_construct_n.md @@ -37,6 +37,10 @@ return first; * addressof[link addressof.md] * iterator_traits[link /reference/iterator/iterator_traits.md] +## 例外 + +呼び出すコンストラクタなどから例外がスローされた場合、その例外がこの関数の外側に伝播される前に、その時点で構築済のオブジェクトは全て未規定の順序で破棄される。すなわち、例外がスローされた場合は初期化対象領域は未初期化のままとなる。 + ### 例 ```cpp example