Skip to content

Commit 5c7681f

Browse files
Add nodiscard and constexpr
1 parent 7dbe01f commit 5c7681f

File tree

4 files changed

+41
-49
lines changed

4 files changed

+41
-49
lines changed

include/beman/any_view/any_view.hpp

Lines changed: 18 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -57,39 +57,31 @@ class any_view : public std::ranges::view_interface<any_view<ElementT, OptionsV,
5757

5858
public:
5959
template <detail::viewable_range_compatible_with<any_view> RangeT>
60-
any_view(RangeT&&);
61-
62-
any_view(const any_view&)
63-
requires(not copyable)
64-
= delete;
60+
constexpr any_view(RangeT&&);
6561

6662
constexpr any_view(const any_view&)
6763
requires copyable
6864
= default;
6965

7066
constexpr any_view(any_view&&) noexcept = default;
7167

72-
auto operator=(const any_view&) -> any_view&
73-
requires(not copyable)
74-
= delete;
75-
7668
constexpr auto operator=(const any_view&) -> any_view&
7769
requires copyable
7870
= default;
7971

8072
constexpr auto operator=(any_view&&) noexcept -> any_view& = default;
8173

82-
auto begin() -> iterator
74+
[[nodiscard]] constexpr auto begin() -> iterator
8375
requires(not simple);
84-
auto end() -> sentinel
76+
[[nodiscard]] constexpr auto end() -> sentinel
8577
requires(not simple);
8678

87-
auto begin() const -> iterator
79+
[[nodiscard]] constexpr auto begin() const -> iterator
8880
requires simple;
89-
auto end() const -> sentinel
81+
[[nodiscard]] constexpr auto end() const -> sentinel
9082
requires simple;
9183

92-
auto size() const -> size_type
84+
[[nodiscard]] constexpr auto size() const -> size_type
9385
requires sized;
9486
};
9587

@@ -117,7 +109,7 @@ class any_view : public std::ranges::view_interface<any_view<ElementT, RangeTrai
117109

118110
public:
119111
template <detail::viewable_range_compatible_with<any_view> RangeT>
120-
any_view(RangeT&&);
112+
constexpr any_view(RangeT&&);
121113

122114
constexpr any_view(const any_view&)
123115
requires copyable
@@ -131,17 +123,17 @@ class any_view : public std::ranges::view_interface<any_view<ElementT, RangeTrai
131123

132124
constexpr auto operator=(any_view&&) noexcept -> any_view& = default;
133125

134-
auto begin() -> iterator
126+
[[nodiscard]] constexpr auto begin() -> iterator
135127
requires(not simple);
136-
auto end() -> sentinel
128+
[[nodiscard]] constexpr auto end() -> sentinel
137129
requires(not simple);
138130

139-
auto begin() const -> iterator
131+
[[nodiscard]] constexpr auto begin() const -> iterator
140132
requires simple;
141-
auto end() const -> sentinel
133+
[[nodiscard]] constexpr auto end() const -> sentinel
142134
requires simple;
143135

144-
auto size() const -> size_type
136+
[[nodiscard]] constexpr auto size() const -> size_type
145137
requires sized;
146138
};
147139

@@ -168,7 +160,7 @@ class any_view : public std::ranges::view_interface<any_view<ElementT, OptionsV>
168160

169161
public:
170162
template <detail::viewable_range_compatible_with<any_view> RangeT>
171-
any_view(RangeT&&);
163+
constexpr any_view(RangeT&&);
172164

173165
constexpr any_view(const any_view&)
174166
requires copyable
@@ -182,17 +174,17 @@ class any_view : public std::ranges::view_interface<any_view<ElementT, OptionsV>
182174

183175
constexpr auto operator=(any_view&&) noexcept -> any_view& = default;
184176

185-
auto begin() -> iterator
177+
[[nodiscard]] constexpr auto begin() -> iterator
186178
requires(not simple);
187-
auto end() -> sentinel
179+
[[nodiscard]] constexpr auto end() -> sentinel
188180
requires(not simple);
189181

190-
auto begin() const -> iterator
182+
[[nodiscard]] constexpr auto begin() const -> iterator
191183
requires simple;
192-
auto end() const -> sentinel
184+
[[nodiscard]] constexpr auto end() const -> sentinel
193185
requires simple;
194186

195-
auto size() const -> size_type
187+
[[nodiscard]] constexpr auto size() const -> size_type
196188
requires sized;
197189
};
198190

include/beman/any_view/any_view_options.hpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,19 +33,19 @@ enum class any_view_options {
3333
simple = 0b10000000,
3434
};
3535

36-
constexpr auto operator|(any_view_options l, any_view_options r) noexcept -> any_view_options {
36+
[[nodiscard]] constexpr auto operator|(any_view_options l, any_view_options r) noexcept -> any_view_options {
3737
return any_view_options(static_cast<int>(l) | static_cast<int>(r));
3838
}
3939

40-
constexpr auto operator&(any_view_options l, any_view_options r) noexcept -> any_view_options {
40+
[[nodiscard]] constexpr auto operator&(any_view_options l, any_view_options r) noexcept -> any_view_options {
4141
return any_view_options(static_cast<int>(l) & static_cast<int>(r));
4242
}
4343

44-
constexpr auto operator^(any_view_options l, any_view_options r) noexcept -> any_view_options {
44+
[[nodiscard]] constexpr auto operator^(any_view_options l, any_view_options r) noexcept -> any_view_options {
4545
return any_view_options(static_cast<int>(l) ^ static_cast<int>(r));
4646
}
4747

48-
constexpr auto operator~(any_view_options k) noexcept -> any_view_options {
48+
[[nodiscard]] constexpr auto operator~(any_view_options k) noexcept -> any_view_options {
4949
return any_view_options(~static_cast<int>(k));
5050
}
5151

@@ -58,7 +58,7 @@ constexpr auto operator^=(any_view_options& l, any_view_options r) noexcept -> a
5858
namespace detail {
5959

6060
template <any_view_options OptionsV>
61-
consteval auto get_iterator_concept() {
61+
[[nodiscard]] consteval auto get_iterator_concept() {
6262
using enum any_view_options;
6363
constexpr auto iterator_concept = OptionsV & contiguous;
6464

include/beman/any_view/detail/iterator.hpp

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,39 +22,39 @@ class iterator {
2222
using element_type = ElementT;
2323
using difference_type = DiffT;
2424

25-
auto operator*() const -> reference;
25+
[[nodiscard]] constexpr auto operator*() const -> reference;
2626

27-
friend auto iter_move(const iterator&) -> rvalue_reference;
27+
friend constexpr auto iter_move(const iterator&) -> rvalue_reference;
2828

29-
auto operator->() const -> pointer;
29+
[[nodiscard]] constexpr auto operator->() const -> pointer;
3030

31-
auto operator++() -> iterator&;
31+
constexpr auto operator++() -> iterator&;
3232

33-
auto operator++(int) -> iterator;
33+
[[nodiscard]] constexpr auto operator++(int) -> iterator;
3434

35-
auto operator==(const iterator&) const -> bool;
35+
[[nodiscard]] constexpr auto operator==(const iterator&) const -> bool;
3636

37-
auto operator--() -> iterator&;
37+
constexpr auto operator--() -> iterator&;
3838

39-
auto operator--(int) -> iterator;
39+
[[nodiscard]] constexpr auto operator--(int) -> iterator;
4040

41-
auto operator<=>(const iterator&) const -> std::partial_ordering;
41+
[[nodiscard]] constexpr auto operator<=>(const iterator&) const -> std::partial_ordering;
4242

43-
auto operator-(const iterator&) const -> difference_type;
43+
[[nodiscard]] constexpr auto operator-(const iterator&) const -> difference_type;
4444

45-
auto operator+=(difference_type) -> iterator&;
45+
constexpr auto operator+=(difference_type) -> iterator&;
4646

47-
auto operator+(difference_type) const -> iterator;
47+
[[nodiscard]] constexpr auto operator+(difference_type) const -> iterator;
4848

49-
friend auto operator+(difference_type, const iterator&) -> iterator;
49+
friend constexpr auto operator+(difference_type, const iterator&) -> iterator;
5050

51-
auto operator-=(difference_type) -> iterator&;
51+
constexpr auto operator-=(difference_type) -> iterator&;
5252

53-
auto operator-(difference_type) const -> iterator;
53+
[[nodiscard]] constexpr auto operator-(difference_type) const -> iterator;
5454

55-
auto operator[](difference_type) const -> reference;
55+
[[nodiscard]] constexpr auto operator[](difference_type) const -> reference;
5656

57-
auto operator==(std::default_sentinel_t) const -> bool;
57+
[[nodiscard]] constexpr auto operator==(std::default_sentinel_t) const -> bool;
5858
};
5959

6060
} // namespace beman::any_view::detail

include/beman/any_view/range_traits.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ namespace beman::any_view {
1212
namespace detail {
1313

1414
template <std::ranges::range RangeT>
15-
consteval auto get_range_concept() {
15+
[[nodiscard]] consteval auto get_range_concept() {
1616
if constexpr (std::ranges::contiguous_range<RangeT>) {
1717
return std::contiguous_iterator_tag{};
1818
} else if constexpr (std::ranges::random_access_range<RangeT>) {

0 commit comments

Comments
 (0)