[move.sent.ops]

# 24 Iterators library [[iterators]](./#iterators)

## 24.5 Iterator adaptors [[predef.iterators]](predef.iterators#move.sent.ops)

### 24.5.4 Move iterators and sentinels [[move.iterators]](move.iterators#move.sent.ops)

#### 24.5.4.11 Operations [move.sent.ops]

[ð](#lib:move_sentinel,constructor)

`constexpr move_sentinel();
`

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iterators.tex#L5354)

*Effects*: Value-initializes last[.](#1.sentence-1)

If is_trivially_default_constructible_v<S> is true,
then this constructor is a constexpr constructor[.](#1.sentence-2)

[ð](#lib:move_sentinel,constructor_)

`constexpr explicit move_sentinel(S s);
`

[2](#2)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iterators.tex#L5367)

*Effects*: Initializes last with std​::​move(s)[.](#2.sentence-1)

[ð](#lib:move_sentinel,constructor__)

`template<class S2>
  requires [convertible_to](concept.convertible#concept:convertible_to "18.4.4 Concept convertible_­to [concept.convertible]")<const S2&, S>
    constexpr move_sentinel(const move_sentinel<S2>& s);
`

[3](#3)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iterators.tex#L5380)

*Effects*: Initializes last with s.last[.](#3.sentence-1)

[ð](#lib:operator=,move_sentinel)

`template<class S2>
  requires [assignable_from](concept.assignable#concept:assignable_from "18.4.8 Concept assignable_­from [concept.assignable]")<S&, const S2&>
    constexpr move_sentinel& operator=(const move_sentinel<S2>& s);
`

[4](#4)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iterators.tex#L5394)

*Effects*: Equivalent to: last = s.last; return *this;

[ð](#lib:base,move_sentinel)

`constexpr S base() const;
`

[5](#5)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iterators.tex#L5405)

*Returns*: last[.](#5.sentence-1)
