Skip to content

Commit b263a71

Browse files
authored
[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.
1 parent 2074de2 commit b263a71

File tree

1 file changed

+2
-12
lines changed

1 file changed

+2
-12
lines changed

libcxx/include/vector

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1292,24 +1292,14 @@ vector<_Tp, _Allocator>::vector(vector&& __x, const __type_identity_t<allocator_
12921292
template <class _Tp, class _Allocator>
12931293
_LIBCPP_CONSTEXPR_SINCE_CXX20 inline _LIBCPP_HIDE_FROM_ABI
12941294
vector<_Tp, _Allocator>::vector(initializer_list<value_type> __il) {
1295-
auto __guard = std::__make_exception_guard(__destroy_vector(*this));
1296-
if (__il.size() > 0) {
1297-
__vallocate(__il.size());
1298-
__construct_at_end(__il.begin(), __il.end(), __il.size());
1299-
}
1300-
__guard.__complete();
1295+
__init_with_size(__il.begin(), __il.end(), __il.size());
13011296
}
13021297

13031298
template <class _Tp, class _Allocator>
13041299
_LIBCPP_CONSTEXPR_SINCE_CXX20 inline _LIBCPP_HIDE_FROM_ABI
13051300
vector<_Tp, _Allocator>::vector(initializer_list<value_type> __il, const allocator_type& __a)
13061301
: __alloc_(__a) {
1307-
auto __guard = std::__make_exception_guard(__destroy_vector(*this));
1308-
if (__il.size() > 0) {
1309-
__vallocate(__il.size());
1310-
__construct_at_end(__il.begin(), __il.end(), __il.size());
1311-
}
1312-
__guard.__complete();
1302+
__init_with_size(__il.begin(), __il.end(), __il.size());
13131303
}
13141304

13151305
#endif // _LIBCPP_CXX03_LANG

0 commit comments

Comments
 (0)