Skip to content

Commit b7482b9

Browse files
committed
Sync constexpr irange patch from PyTorch core
Specifically, pytorch/pytorch#147569 . ghstack-source-id: 4eede5f ghstack-comment-id: 2673116689 Pull Request resolved: #8610
1 parent 7b35dc3 commit b7482b9

File tree

1 file changed

+11
-11
lines changed
  • runtime/core/portable_type/c10/c10/util

1 file changed

+11
-11
lines changed

runtime/core/portable_type/c10/c10/util/irange.h

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,28 +24,28 @@ struct integer_iterator {
2424
using pointer = I*;
2525
using reference = I&;
2626

27-
explicit integer_iterator(I value) : value(value) {}
27+
explicit constexpr integer_iterator(I value) : value(value) {}
2828

29-
I operator*() const {
29+
constexpr I operator*() const {
3030
return value;
3131
}
3232

33-
I const* operator->() const {
33+
constexpr I const* operator->() const {
3434
return &value;
3535
}
3636

37-
integer_iterator& operator++() {
37+
constexpr integer_iterator& operator++() {
3838
++value;
3939
return *this;
4040
}
4141

42-
integer_iterator operator++(int) {
42+
constexpr integer_iterator operator++(int) {
4343
const auto copy = *this;
4444
++*this;
4545
return copy;
4646
}
4747

48-
bool operator==(const integer_iterator& other) const {
48+
constexpr bool operator==(const integer_iterator& other) const {
4949
if constexpr (one_sided) {
5050
// Range-for loops' end test is `begin != end`, not `begin <
5151
// end`. To handle `c10::irange(n)` where n < 0 (which should be
@@ -64,7 +64,7 @@ struct integer_iterator {
6464
return false; // Horrible hack
6565
}
6666

67-
bool operator!=(const integer_iterator& other) const {
67+
constexpr bool operator!=(const integer_iterator& other) const {
6868
return !(*this == other);
6969
}
7070

@@ -80,12 +80,12 @@ template <
8080
std::enable_if_t<std::is_integral_v<I>, bool> = true>
8181
struct integer_range {
8282
public:
83-
integer_range(I begin, I end) : begin_(begin), end_(end) {}
83+
constexpr integer_range(I begin, I end) : begin_(begin), end_(end) {}
8484
using iterator = detail::integer_iterator<I, one_sided>;
85-
iterator begin() const {
85+
constexpr iterator begin() const {
8686
return begin_;
8787
}
88-
iterator end() const {
88+
constexpr iterator end() const {
8989
return end_;
9090
}
9191

@@ -116,7 +116,7 @@ integer_range<Integer2> irange(Integer1 begin, Integer2 end) {
116116
template <
117117
typename Integer,
118118
std::enable_if_t<std::is_integral_v<Integer>, bool> = true>
119-
integer_range<Integer, true> irange(Integer end) {
119+
constexpr integer_range<Integer, true> irange(Integer end) {
120120
return {Integer(), end};
121121
}
122122

0 commit comments

Comments
 (0)