diff --git a/libcxx/include/ext/hash_set b/libcxx/include/ext/hash_set index 62a7a0dbcffb9..2796774fee24a 100644 --- a/libcxx/include/ext/hash_set +++ b/libcxx/include/ext/hash_set @@ -534,10 +534,7 @@ hash_multiset<_Value, _Hash, _Pred, _Alloc>::hash_multiset( } template -hash_multiset<_Value, _Hash, _Pred, _Alloc>::hash_multiset(const hash_multiset& __u) : __table_(__u.__table_) { - __table_.__rehash_multi(__u.bucket_count()); - insert(__u.begin(), __u.end()); -} +hash_multiset<_Value, _Hash, _Pred, _Alloc>::hash_multiset(const hash_multiset& __u) : __table_(__u.__table_) {} template template diff --git a/libcxx/test/extensions/gnu/hash_multiset/copy.pass.cpp b/libcxx/test/extensions/gnu/hash_multiset/copy.pass.cpp new file mode 100644 index 0000000000000..84c14bd18b085 --- /dev/null +++ b/libcxx/test/extensions/gnu/hash_multiset/copy.pass.cpp @@ -0,0 +1,27 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// ADDITIONAL_COMPILE_FLAGS: -Wno-deprecated + +// hash_multiset::hash_multiset(const hash_multiset&) + +#include +#include + +int main(int, char**) { + __gnu_cxx::hash_multiset set; + + set.insert(1); + set.insert(1); + + auto set2 = set; + + assert(set2.size() == 2); + + return 0; +}