@@ -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 >
8181struct 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) {
116116template <
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