[libcxx-commits] [libcxx] b263a71 - [libc++] Refactor vector constructors to eliminate code duplication (#113193)
via libcxx-commits
libcxx-commits at lists.llvm.org
Tue Oct 22 09:21:34 PDT 2024
Author: Peng Liu
Date: 2024-10-22T12:21:31-04:00
New Revision: b263a71c2b1b14be53102f0a2ce4df131937f478
URL: https://github.com/llvm/llvm-project/commit/b263a71c2b1b14be53102f0a2ce4df131937f478
DIFF: https://github.com/llvm/llvm-project/commit/b263a71c2b1b14be53102f0a2ce4df131937f478.diff
LOG: [libc++] Refactor vector constructors to eliminate code duplication (#113193)
This PR refactors the std::vector's initializer_list constructors to
reduce code duplication. The constructors now call `__init_with_size`
directly, reducing code duplication and improving readability and
maintainability.
Added:
Modified:
libcxx/include/vector
Removed:
################################################################################
diff --git a/libcxx/include/vector b/libcxx/include/vector
index dc31f31838264c..bfbf1ea1cfc9f0 100644
--- a/libcxx/include/vector
+++ b/libcxx/include/vector
@@ -1292,24 +1292,14 @@ vector<_Tp, _Allocator>::vector(vector&& __x, const __type_identity_t<allocator_
template <class _Tp, class _Allocator>
_LIBCPP_CONSTEXPR_SINCE_CXX20 inline _LIBCPP_HIDE_FROM_ABI
vector<_Tp, _Allocator>::vector(initializer_list<value_type> __il) {
- auto __guard = std::__make_exception_guard(__destroy_vector(*this));
- if (__il.size() > 0) {
- __vallocate(__il.size());
- __construct_at_end(__il.begin(), __il.end(), __il.size());
- }
- __guard.__complete();
+ __init_with_size(__il.begin(), __il.end(), __il.size());
}
template <class _Tp, class _Allocator>
_LIBCPP_CONSTEXPR_SINCE_CXX20 inline _LIBCPP_HIDE_FROM_ABI
vector<_Tp, _Allocator>::vector(initializer_list<value_type> __il, const allocator_type& __a)
: __alloc_(__a) {
- auto __guard = std::__make_exception_guard(__destroy_vector(*this));
- if (__il.size() > 0) {
- __vallocate(__il.size());
- __construct_at_end(__il.begin(), __il.end(), __il.size());
- }
- __guard.__complete();
+ __init_with_size(__il.begin(), __il.end(), __il.size());
}
#endif // _LIBCPP_CXX03_LANG
More information about the libcxx-commits
mailing list