Ho Cheung 18b94b517d [rtc_base] Replace manual element initialization and movement with C++17 standard functions
This CL focuses on addressing the remaining TODO items in the
`//rtc_base/bounded_inline_vector_impl.h` file, mainly involving the two
functions `void DefaultInitializeElements` and `void MoveElements`.

In the `void DefaultInitializeElements` function, the placement new usage is
adopted. When using placement new, manual construction operations on objects are
usually required, and a fair amount of logic needs to be written to ensure
correct object construction. In contrast, the
`std::uninitialized_default_construct_n()` function only requires passing in the
starting address of the memory and the number of objects to be constructed, and
it can automatically construct objects in batches.

In the `void MoveElements` function, the original implementation also uses the
placement new usage. When using placement new to move objects, manual handling
of the moving operation for each object is required, and usually, `std::move`
needs to be combined to achieve the object's move semantics. However, the
`std::uninitialized_move_n()` function can automatically complete the object
moving process just by passing in specific parameters.

To improve the code's simplicity, it is considered to use
`std::uninitialized_default_construct_n()` and `std::uninitialized_move_n()` to
replace the original two placement new usages.

Fixed: webrtc:392037564
Change-Id: If8edcd9ac8a4d85be0ce0a23f6433d7f91b39ad3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/375182
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Auto-Submit: Ho Cheung <hocheung@chromium.org>
Cr-Commit-Position: refs/heads/main@{#43831}
2025-01-31 05:31:32 -08:00
..
2025-01-08 11:20:49 -08:00
2025-01-08 11:20:49 -08:00
2025-01-08 11:20:49 -08:00
2024-12-03 12:17:02 +00:00
2023-04-21 06:17:42 +00:00
2024-08-09 14:58:10 +00:00
2025-01-08 11:20:49 -08:00
2023-04-21 06:17:42 +00:00
2024-10-31 15:31:38 +00:00
2024-04-24 20:53:23 +00:00
2022-01-28 15:13:45 +00:00
2023-04-21 06:17:42 +00:00
2024-12-19 07:37:19 -08:00
2024-08-14 07:11:57 +00:00
2023-04-21 06:17:42 +00:00
2021-08-31 14:27:49 +00:00
2024-02-01 14:43:30 +00:00
2024-02-01 14:43:30 +00:00
2024-06-07 09:47:26 +00:00
2024-06-07 09:47:26 +00:00
2024-08-14 07:11:57 +00:00
2024-02-01 14:43:30 +00:00
2024-12-19 07:37:19 -08:00
2024-12-19 07:37:19 -08:00
2025-01-08 11:20:49 -08:00
2023-04-21 06:17:42 +00:00
2021-09-21 15:17:26 +00:00
2025-01-08 11:20:49 -08:00
2024-06-07 09:47:26 +00:00