diff --git a/libcxx/include/map b/libcxx/include/map index 16127a5d76bc..f533d8f4b8a9 100644 --- a/libcxx/include/map +++ b/libcxx/include/map @@ -835,7 +835,15 @@ public: typedef _VSTD::reverse_iterator const_reverse_iterator; _LIBCPP_INLINE_VISIBILITY - map(const key_compare& __comp = key_compare()) + map() + _NOEXCEPT_( + is_nothrow_default_constructible::value && + is_nothrow_default_constructible::value && + is_nothrow_copy_constructible::value) + : __tree_(__vc(key_compare())) {} + + _LIBCPP_INLINE_VISIBILITY + explicit map(const key_compare& __comp) _NOEXCEPT_( is_nothrow_default_constructible::value && is_nothrow_default_constructible::value && @@ -1568,7 +1576,15 @@ public: typedef _VSTD::reverse_iterator const_reverse_iterator; _LIBCPP_INLINE_VISIBILITY - multimap(const key_compare& __comp = key_compare()) + multimap() + _NOEXCEPT_( + is_nothrow_default_constructible::value && + is_nothrow_default_constructible::value && + is_nothrow_copy_constructible::value) + : __tree_(__vc(key_compare())) {} + + _LIBCPP_INLINE_VISIBILITY + explicit multimap(const key_compare& __comp) _NOEXCEPT_( is_nothrow_default_constructible::value && is_nothrow_default_constructible::value && diff --git a/libcxx/include/set b/libcxx/include/set index f093b1896a30..7dbf97095e24 100644 --- a/libcxx/include/set +++ b/libcxx/include/set @@ -425,12 +425,21 @@ public: typedef _VSTD::reverse_iterator const_reverse_iterator; _LIBCPP_INLINE_VISIBILITY - set(const value_compare& __comp = value_compare()) + set() + _NOEXCEPT_( + is_nothrow_default_constructible::value && + is_nothrow_default_constructible::value && + is_nothrow_copy_constructible::value) + : __tree_(value_compare()) {} + + _LIBCPP_INLINE_VISIBILITY + explicit set(const value_compare& __comp) _NOEXCEPT_( is_nothrow_default_constructible::value && is_nothrow_default_constructible::value && is_nothrow_copy_constructible::value) : __tree_(__comp) {} + _LIBCPP_INLINE_VISIBILITY explicit set(const value_compare& __comp, const allocator_type& __a) : __tree_(__comp, __a) {} @@ -822,12 +831,21 @@ public: // construct/copy/destroy: _LIBCPP_INLINE_VISIBILITY - multiset(const value_compare& __comp = value_compare()) + multiset() + _NOEXCEPT_( + is_nothrow_default_constructible::value && + is_nothrow_default_constructible::value && + is_nothrow_copy_constructible::value) + : __tree_(value_compare()) {} + + _LIBCPP_INLINE_VISIBILITY + explicit multiset(const value_compare& __comp) _NOEXCEPT_( is_nothrow_default_constructible::value && is_nothrow_default_constructible::value && is_nothrow_copy_constructible::value) : __tree_(__comp) {} + _LIBCPP_INLINE_VISIBILITY explicit multiset(const value_compare& __comp, const allocator_type& __a) : __tree_(__comp, __a) {}