diff --git a/headers/flat_hpp/flat_map.hpp b/headers/flat_hpp/flat_map.hpp index 0931e0f..54baa50 100644 --- a/headers/flat_hpp/flat_map.hpp +++ b/headers/flat_hpp/flat_map.hpp @@ -181,43 +181,83 @@ namespace flat_hpp return *this; } - iterator begin() noexcept { return data_.begin(); } - const_iterator begin() const noexcept { return data_.begin(); } - const_iterator cbegin() const noexcept { return data_.cbegin(); } + iterator begin() + noexcept(noexcept(std::declval().begin())) { + return data_.begin(); + } - iterator end() noexcept { return data_.end(); } - const_iterator end() const noexcept { return data_.end(); } - const_iterator cend() const noexcept { return data_.cend(); } + const_iterator begin() const + noexcept(noexcept(std::declval().begin())) { + return data_.begin(); + } - reverse_iterator rbegin() noexcept { return data_.rbegin(); } - const_reverse_iterator rbegin() const noexcept { return data_.rbegin(); } - const_reverse_iterator crbegin() const noexcept { return data_.crbegin(); } + const_iterator cbegin() const + noexcept(noexcept(std::declval().cbegin())) { + return data_.cbegin(); + } - reverse_iterator rend() noexcept { return data_.rend(); } - const_reverse_iterator rend() const noexcept { return data_.rend(); } - const_reverse_iterator crend() const noexcept { return data_.crend(); } + iterator end() + noexcept(noexcept(std::declval().end())) { + return data_.end(); + } + + const_iterator end() const + noexcept(noexcept(std::declval().end())) { + return data_.end(); + } + + const_iterator cend() const + noexcept(noexcept(std::declval().cend())) { + return data_.cend(); + } + + reverse_iterator rbegin() + noexcept(noexcept(std::declval().rbegin())) { + return data_.rbegin(); + } + + const_reverse_iterator rbegin() const + noexcept(noexcept(std::declval().rbegin())) { + return data_.rbegin(); + } + + const_reverse_iterator crbegin() const + noexcept(noexcept(std::declval().crbegin())) { + return data_.crbegin(); + } + + reverse_iterator rend() + noexcept(noexcept(std::declval().rend())) { + return data_.rend(); + } + + const_reverse_iterator rend() const + noexcept(noexcept(std::declval().rend())) { + return data_.rend(); + } + + const_reverse_iterator crend() const + noexcept(noexcept(std::declval().crend())) { + return data_.crend(); + } bool empty() const - noexcept(noexcept(std::declval().empty())) - { + noexcept(noexcept(std::declval().empty())) { return data_.empty(); } size_type size() const - noexcept(noexcept(std::declval().size())) - { + noexcept(noexcept(std::declval().size())) { return data_.size(); } size_type max_size() const - noexcept(noexcept(std::declval().max_size())) - { + noexcept(noexcept(std::declval().max_size())) { return data_.max_size(); } size_type capacity() const - noexcept(noexcept(std::declval().capacity())) - { + noexcept(noexcept(std::declval().capacity())) { return data_.capacity(); } @@ -309,8 +349,7 @@ namespace flat_hpp } void clear() - noexcept(noexcept(std::declval().clear())) - { + noexcept(noexcept(std::declval().clear())) { data_.clear(); } diff --git a/headers/flat_hpp/flat_multimap.hpp b/headers/flat_hpp/flat_multimap.hpp index a2342e7..c20d395 100644 --- a/headers/flat_hpp/flat_multimap.hpp +++ b/headers/flat_hpp/flat_multimap.hpp @@ -181,43 +181,83 @@ namespace flat_hpp return *this; } - iterator begin() noexcept { return data_.begin(); } - const_iterator begin() const noexcept { return data_.begin(); } - const_iterator cbegin() const noexcept { return data_.cbegin(); } + iterator begin() + noexcept(noexcept(std::declval().begin())) { + return data_.begin(); + } - iterator end() noexcept { return data_.end(); } - const_iterator end() const noexcept { return data_.end(); } - const_iterator cend() const noexcept { return data_.cend(); } + const_iterator begin() const + noexcept(noexcept(std::declval().begin())) { + return data_.begin(); + } - reverse_iterator rbegin() noexcept { return data_.rbegin(); } - const_reverse_iterator rbegin() const noexcept { return data_.rbegin(); } - const_reverse_iterator crbegin() const noexcept { return data_.crbegin(); } + const_iterator cbegin() const + noexcept(noexcept(std::declval().cbegin())) { + return data_.cbegin(); + } - reverse_iterator rend() noexcept { return data_.rend(); } - const_reverse_iterator rend() const noexcept { return data_.rend(); } - const_reverse_iterator crend() const noexcept { return data_.crend(); } + iterator end() + noexcept(noexcept(std::declval().end())) { + return data_.end(); + } + + const_iterator end() const + noexcept(noexcept(std::declval().end())) { + return data_.end(); + } + + const_iterator cend() const + noexcept(noexcept(std::declval().cend())) { + return data_.cend(); + } + + reverse_iterator rbegin() + noexcept(noexcept(std::declval().rbegin())) { + return data_.rbegin(); + } + + const_reverse_iterator rbegin() const + noexcept(noexcept(std::declval().rbegin())) { + return data_.rbegin(); + } + + const_reverse_iterator crbegin() const + noexcept(noexcept(std::declval().crbegin())) { + return data_.crbegin(); + } + + reverse_iterator rend() + noexcept(noexcept(std::declval().rend())) { + return data_.rend(); + } + + const_reverse_iterator rend() const + noexcept(noexcept(std::declval().rend())) { + return data_.rend(); + } + + const_reverse_iterator crend() const + noexcept(noexcept(std::declval().crend())) { + return data_.crend(); + } bool empty() const - noexcept(noexcept(std::declval().empty())) - { + noexcept(noexcept(std::declval().empty())) { return data_.empty(); } size_type size() const - noexcept(noexcept(std::declval().size())) - { + noexcept(noexcept(std::declval().size())) { return data_.size(); } size_type max_size() const - noexcept(noexcept(std::declval().max_size())) - { + noexcept(noexcept(std::declval().max_size())) { return data_.max_size(); } size_type capacity() const - noexcept(noexcept(std::declval().capacity())) - { + noexcept(noexcept(std::declval().capacity())) { return data_.capacity(); } @@ -305,8 +345,7 @@ namespace flat_hpp } void clear() - noexcept(noexcept(std::declval().clear())) - { + noexcept(noexcept(std::declval().clear())) { data_.clear(); } diff --git a/headers/flat_hpp/flat_multiset.hpp b/headers/flat_hpp/flat_multiset.hpp index 15b2623..e6e9111 100644 --- a/headers/flat_hpp/flat_multiset.hpp +++ b/headers/flat_hpp/flat_multiset.hpp @@ -126,43 +126,83 @@ namespace flat_hpp return *this; } - iterator begin() noexcept { return data_.begin(); } - const_iterator begin() const noexcept { return data_.begin(); } - const_iterator cbegin() const noexcept { return data_.cbegin(); } + iterator begin() + noexcept(noexcept(std::declval().begin())) { + return data_.begin(); + } - iterator end() noexcept { return data_.end(); } - const_iterator end() const noexcept { return data_.end(); } - const_iterator cend() const noexcept { return data_.cend(); } + const_iterator begin() const + noexcept(noexcept(std::declval().begin())) { + return data_.begin(); + } - reverse_iterator rbegin() noexcept { return data_.rbegin(); } - const_reverse_iterator rbegin() const noexcept { return data_.rbegin(); } - const_reverse_iterator crbegin() const noexcept { return data_.crbegin(); } + const_iterator cbegin() const + noexcept(noexcept(std::declval().cbegin())) { + return data_.cbegin(); + } - reverse_iterator rend() noexcept { return data_.rend(); } - const_reverse_iterator rend() const noexcept { return data_.rend(); } - const_reverse_iterator crend() const noexcept { return data_.crend(); } + iterator end() + noexcept(noexcept(std::declval().end())) { + return data_.end(); + } + + const_iterator end() const + noexcept(noexcept(std::declval().end())) { + return data_.end(); + } + + const_iterator cend() const + noexcept(noexcept(std::declval().cend())) { + return data_.cend(); + } + + reverse_iterator rbegin() + noexcept(noexcept(std::declval().rbegin())) { + return data_.rbegin(); + } + + const_reverse_iterator rbegin() const + noexcept(noexcept(std::declval().rbegin())) { + return data_.rbegin(); + } + + const_reverse_iterator crbegin() const + noexcept(noexcept(std::declval().crbegin())) { + return data_.crbegin(); + } + + reverse_iterator rend() + noexcept(noexcept(std::declval().rend())) { + return data_.rend(); + } + + const_reverse_iterator rend() const + noexcept(noexcept(std::declval().rend())) { + return data_.rend(); + } + + const_reverse_iterator crend() const + noexcept(noexcept(std::declval().crend())) { + return data_.crend(); + } bool empty() const - noexcept(noexcept(std::declval().empty())) - { + noexcept(noexcept(std::declval().empty())) { return data_.empty(); } size_type size() const - noexcept(noexcept(std::declval().size())) - { + noexcept(noexcept(std::declval().size())) { return data_.size(); } size_type max_size() const - noexcept(noexcept(std::declval().max_size())) - { + noexcept(noexcept(std::declval().max_size())) { return data_.max_size(); } size_type capacity() const - noexcept(noexcept(std::declval().capacity())) - { + noexcept(noexcept(std::declval().capacity())) { return data_.capacity(); } @@ -220,8 +260,7 @@ namespace flat_hpp } void clear() - noexcept(noexcept(std::declval().clear())) - { + noexcept(noexcept(std::declval().clear())) { data_.clear(); } diff --git a/headers/flat_hpp/flat_set.hpp b/headers/flat_hpp/flat_set.hpp index f2ee662..d5cf454 100644 --- a/headers/flat_hpp/flat_set.hpp +++ b/headers/flat_hpp/flat_set.hpp @@ -126,43 +126,83 @@ namespace flat_hpp return *this; } - iterator begin() noexcept { return data_.begin(); } - const_iterator begin() const noexcept { return data_.begin(); } - const_iterator cbegin() const noexcept { return data_.cbegin(); } + iterator begin() + noexcept(noexcept(std::declval().begin())) { + return data_.begin(); + } - iterator end() noexcept { return data_.end(); } - const_iterator end() const noexcept { return data_.end(); } - const_iterator cend() const noexcept { return data_.cend(); } + const_iterator begin() const + noexcept(noexcept(std::declval().begin())) { + return data_.begin(); + } - reverse_iterator rbegin() noexcept { return data_.rbegin(); } - const_reverse_iterator rbegin() const noexcept { return data_.rbegin(); } - const_reverse_iterator crbegin() const noexcept { return data_.crbegin(); } + const_iterator cbegin() const + noexcept(noexcept(std::declval().cbegin())) { + return data_.cbegin(); + } - reverse_iterator rend() noexcept { return data_.rend(); } - const_reverse_iterator rend() const noexcept { return data_.rend(); } - const_reverse_iterator crend() const noexcept { return data_.crend(); } + iterator end() + noexcept(noexcept(std::declval().end())) { + return data_.end(); + } + + const_iterator end() const + noexcept(noexcept(std::declval().end())) { + return data_.end(); + } + + const_iterator cend() const + noexcept(noexcept(std::declval().cend())) { + return data_.cend(); + } + + reverse_iterator rbegin() + noexcept(noexcept(std::declval().rbegin())) { + return data_.rbegin(); + } + + const_reverse_iterator rbegin() const + noexcept(noexcept(std::declval().rbegin())) { + return data_.rbegin(); + } + + const_reverse_iterator crbegin() const + noexcept(noexcept(std::declval().crbegin())) { + return data_.crbegin(); + } + + reverse_iterator rend() + noexcept(noexcept(std::declval().rend())) { + return data_.rend(); + } + + const_reverse_iterator rend() const + noexcept(noexcept(std::declval().rend())) { + return data_.rend(); + } + + const_reverse_iterator crend() const + noexcept(noexcept(std::declval().crend())) { + return data_.crend(); + } bool empty() const - noexcept(noexcept(std::declval().empty())) - { + noexcept(noexcept(std::declval().empty())) { return data_.empty(); } size_type size() const - noexcept(noexcept(std::declval().size())) - { + noexcept(noexcept(std::declval().size())) { return data_.size(); } size_type max_size() const - noexcept(noexcept(std::declval().max_size())) - { + noexcept(noexcept(std::declval().max_size())) { return data_.max_size(); } size_type capacity() const - noexcept(noexcept(std::declval().capacity())) - { + noexcept(noexcept(std::declval().capacity())) { return data_.capacity(); } @@ -224,8 +264,7 @@ namespace flat_hpp } void clear() - noexcept(noexcept(std::declval().clear())) - { + noexcept(noexcept(std::declval().clear())) { data_.clear(); } diff --git a/untests/flat_map_tests.cpp b/untests/flat_map_tests.cpp index 5b2e958..b880656 100644 --- a/untests/flat_map_tests.cpp +++ b/untests/flat_map_tests.cpp @@ -75,10 +75,24 @@ TEST_CASE("flat_map") { STATIC_REQUIRE(std::is_nothrow_swappable_v); STATIC_REQUIRE(!std::is_nothrow_swappable_v); - STATIC_REQUIRE(noexcept(std::declval().empty())); - STATIC_REQUIRE(noexcept(std::declval().size())); - STATIC_REQUIRE(noexcept(std::declval().max_size())); - STATIC_REQUIRE(noexcept(std::declval().capacity())); + STATIC_REQUIRE(noexcept(std::declval().begin())); + STATIC_REQUIRE(noexcept(std::declval().begin())); + STATIC_REQUIRE(noexcept(std::declval().cbegin())); + STATIC_REQUIRE(noexcept(std::declval().end())); + STATIC_REQUIRE(noexcept(std::declval().end())); + STATIC_REQUIRE(noexcept(std::declval().cend())); + + STATIC_REQUIRE(noexcept(std::declval().rbegin())); + STATIC_REQUIRE(noexcept(std::declval().rbegin())); + STATIC_REQUIRE(noexcept(std::declval().crbegin())); + STATIC_REQUIRE(noexcept(std::declval().rend())); + STATIC_REQUIRE(noexcept(std::declval().rend())); + STATIC_REQUIRE(noexcept(std::declval().crend())); + + STATIC_REQUIRE(noexcept(std::declval().empty())); + STATIC_REQUIRE(noexcept(std::declval().size())); + STATIC_REQUIRE(noexcept(std::declval().max_size())); + STATIC_REQUIRE(noexcept(std::declval().capacity())); STATIC_REQUIRE(noexcept(std::declval().clear())); } diff --git a/untests/flat_multimap_tests.cpp b/untests/flat_multimap_tests.cpp index a6cd36b..3247874 100644 --- a/untests/flat_multimap_tests.cpp +++ b/untests/flat_multimap_tests.cpp @@ -75,10 +75,24 @@ TEST_CASE("flat_multimap") { STATIC_REQUIRE(std::is_nothrow_swappable_v); STATIC_REQUIRE(!std::is_nothrow_swappable_v); - STATIC_REQUIRE(noexcept(std::declval().empty())); - STATIC_REQUIRE(noexcept(std::declval().size())); - STATIC_REQUIRE(noexcept(std::declval().max_size())); - STATIC_REQUIRE(noexcept(std::declval().capacity())); + STATIC_REQUIRE(noexcept(std::declval().begin())); + STATIC_REQUIRE(noexcept(std::declval().begin())); + STATIC_REQUIRE(noexcept(std::declval().cbegin())); + STATIC_REQUIRE(noexcept(std::declval().end())); + STATIC_REQUIRE(noexcept(std::declval().end())); + STATIC_REQUIRE(noexcept(std::declval().cend())); + + STATIC_REQUIRE(noexcept(std::declval().rbegin())); + STATIC_REQUIRE(noexcept(std::declval().rbegin())); + STATIC_REQUIRE(noexcept(std::declval().crbegin())); + STATIC_REQUIRE(noexcept(std::declval().rend())); + STATIC_REQUIRE(noexcept(std::declval().rend())); + STATIC_REQUIRE(noexcept(std::declval().crend())); + + STATIC_REQUIRE(noexcept(std::declval().empty())); + STATIC_REQUIRE(noexcept(std::declval().size())); + STATIC_REQUIRE(noexcept(std::declval().max_size())); + STATIC_REQUIRE(noexcept(std::declval().capacity())); STATIC_REQUIRE(noexcept(std::declval().clear())); } diff --git a/untests/flat_multiset_tests.cpp b/untests/flat_multiset_tests.cpp index 748fe21..db7725b 100644 --- a/untests/flat_multiset_tests.cpp +++ b/untests/flat_multiset_tests.cpp @@ -75,10 +75,24 @@ TEST_CASE("flat_multiset") { STATIC_REQUIRE(std::is_nothrow_swappable_v); STATIC_REQUIRE(!std::is_nothrow_swappable_v); - STATIC_REQUIRE(noexcept(std::declval().empty())); - STATIC_REQUIRE(noexcept(std::declval().size())); - STATIC_REQUIRE(noexcept(std::declval().max_size())); - STATIC_REQUIRE(noexcept(std::declval().capacity())); + STATIC_REQUIRE(noexcept(std::declval().begin())); + STATIC_REQUIRE(noexcept(std::declval().begin())); + STATIC_REQUIRE(noexcept(std::declval().cbegin())); + STATIC_REQUIRE(noexcept(std::declval().end())); + STATIC_REQUIRE(noexcept(std::declval().end())); + STATIC_REQUIRE(noexcept(std::declval().cend())); + + STATIC_REQUIRE(noexcept(std::declval().rbegin())); + STATIC_REQUIRE(noexcept(std::declval().rbegin())); + STATIC_REQUIRE(noexcept(std::declval().crbegin())); + STATIC_REQUIRE(noexcept(std::declval().rend())); + STATIC_REQUIRE(noexcept(std::declval().rend())); + STATIC_REQUIRE(noexcept(std::declval().crend())); + + STATIC_REQUIRE(noexcept(std::declval().empty())); + STATIC_REQUIRE(noexcept(std::declval().size())); + STATIC_REQUIRE(noexcept(std::declval().max_size())); + STATIC_REQUIRE(noexcept(std::declval().capacity())); STATIC_REQUIRE(noexcept(std::declval().clear())); } diff --git a/untests/flat_set_tests.cpp b/untests/flat_set_tests.cpp index f49cc14..480dbeb 100644 --- a/untests/flat_set_tests.cpp +++ b/untests/flat_set_tests.cpp @@ -75,10 +75,24 @@ TEST_CASE("flat_set") { STATIC_REQUIRE(std::is_nothrow_swappable_v); STATIC_REQUIRE(!std::is_nothrow_swappable_v); - STATIC_REQUIRE(noexcept(std::declval().empty())); - STATIC_REQUIRE(noexcept(std::declval().size())); - STATIC_REQUIRE(noexcept(std::declval().max_size())); - STATIC_REQUIRE(noexcept(std::declval().capacity())); + STATIC_REQUIRE(noexcept(std::declval().begin())); + STATIC_REQUIRE(noexcept(std::declval().begin())); + STATIC_REQUIRE(noexcept(std::declval().cbegin())); + STATIC_REQUIRE(noexcept(std::declval().end())); + STATIC_REQUIRE(noexcept(std::declval().end())); + STATIC_REQUIRE(noexcept(std::declval().cend())); + + STATIC_REQUIRE(noexcept(std::declval().rbegin())); + STATIC_REQUIRE(noexcept(std::declval().rbegin())); + STATIC_REQUIRE(noexcept(std::declval().crbegin())); + STATIC_REQUIRE(noexcept(std::declval().rend())); + STATIC_REQUIRE(noexcept(std::declval().rend())); + STATIC_REQUIRE(noexcept(std::declval().crend())); + + STATIC_REQUIRE(noexcept(std::declval().empty())); + STATIC_REQUIRE(noexcept(std::declval().size())); + STATIC_REQUIRE(noexcept(std::declval().max_size())); + STATIC_REQUIRE(noexcept(std::declval().capacity())); STATIC_REQUIRE(noexcept(std::declval().clear())); }