diff --git a/libcxx/include/__tree b/libcxx/include/__tree index 9d4ba3ad0639c..5dee314b847f2 100644 --- a/libcxx/include/__tree +++ b/libcxx/include/__tree @@ -646,12 +646,7 @@ public: using reference = value_type&; using pointer = __rebind_pointer_t<_NodePtr, value_type>; - _LIBCPP_HIDE_FROM_ABI __tree_iterator() _NOEXCEPT -#if _LIBCPP_STD_VER >= 14 - : __ptr_(nullptr) -#endif - { - } + _LIBCPP_HIDE_FROM_ABI __tree_iterator() _NOEXCEPT : __ptr_(nullptr) {} _LIBCPP_HIDE_FROM_ABI reference operator*() const { return __get_np()->__value_; } _LIBCPP_HIDE_FROM_ABI pointer operator->() const { return pointer_traits::pointer_to(__get_np()->__value_); } @@ -720,12 +715,7 @@ public: using reference = const value_type&; using pointer = __rebind_pointer_t<_NodePtr, const value_type>; - _LIBCPP_HIDE_FROM_ABI __tree_const_iterator() _NOEXCEPT -#if _LIBCPP_STD_VER >= 14 - : __ptr_(nullptr) -#endif - { - } + _LIBCPP_HIDE_FROM_ABI __tree_const_iterator() _NOEXCEPT : __ptr_(nullptr) {} private: typedef __tree_iterator<_Tp, __node_pointer, difference_type> __non_const_iterator; diff --git a/libcxx/test/libcxx/containers/associative/map/initialize_iterator.pass.cpp b/libcxx/test/libcxx/containers/associative/map/initialize_iterator.pass.cpp new file mode 100644 index 0000000000000..cfa8e72e98e51 --- /dev/null +++ b/libcxx/test/libcxx/containers/associative/map/initialize_iterator.pass.cpp @@ -0,0 +1,26 @@ +//===----------------------------------------------------------------------===// +// +// 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 +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++03 + +// Check that map::iterator is initialized when default constructed + +#include +#include + +template +void test() { + Iter iter; + Iter iter2 = Iter(); + assert(iter == iter2); +} + +int main() { + test::iterator>(); + test::const_iterator>(); +} diff --git a/libcxx/test/libcxx/containers/associative/set/initialize_iterator.pass.cpp b/libcxx/test/libcxx/containers/associative/set/initialize_iterator.pass.cpp new file mode 100644 index 0000000000000..c919e5c3680c3 --- /dev/null +++ b/libcxx/test/libcxx/containers/associative/set/initialize_iterator.pass.cpp @@ -0,0 +1,26 @@ +//===----------------------------------------------------------------------===// +// +// 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 +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++03 + +// Check that set::iterator is initialized when default constructed + +#include +#include + +template +void test() { + Iter iter; + Iter iter2 = Iter(); + assert(iter == iter2); +} + +int main() { + test::iterator>(); + test::const_iterator>(); +}