std::default_sentinel_t, std::default_sentinel - cppreference.com (original) (raw)

C++

Compiler support
Freestanding and hosted
Language
Standard library
Standard library headers
Named requirements
Feature test macros (C++20)
Language support library
Concepts library (C++20)
Diagnostics library
Memory management library
Metaprogramming library (C++11)
General utilities library
Containers library
Iterators library
Ranges library (C++20)
Algorithms library
Strings library
Text processing library
Numerics library
Date and time library
Input/output library
Filesystem library (C++17)
Concurrency support library (C++11)
Execution control library (C++26)
Technical specifications
Symbols index
External libraries

[edit]

Iterator library

Iterator concepts
indirectly_readable(C++20) indirectly_writable(C++20) weakly_incrementable(C++20) incrementable(C++20) is-integer-like is-signed-integer-like(C++20)(C++20) sentinel_for(C++20) sized_sentinel_for(C++20) input_iterator(C++20) output_iterator(C++20) input_or_output_iterator(C++20) forward_iterator(C++20) bidirectional_iterator(C++20) random_access_iterator(C++20) contiguous_iterator(C++20)
Iterator primitives
input_iterator_tagoutput_iterator_tagforward_iterator_tagbidirectional_iterator_tagrandom_access_iterator_tagcontiguous_iterator_tag(C++20) iter_value_titer_difference_titer_reference_titer_const_reference_titer_rvalue_reference_titer_common_reference_t(C++20)(C++20)(C++20)(C++23)(C++20)(C++20) iterator(deprecated in C++17) iterator_traits incrementable_traits(C++20) indirectly_readable_traits(C++20)
Algorithm concepts and utilities
Indirect callable concepts
indirectly_unary_invocableindirectly_regular_unary_invocable(C++20)(C++20) indirect_unary_predicate(C++20) indirect_binary_predicate(C++20) indirect_equivalence_relation(C++20) indirect_strict_weak_order(C++20)
Common algorithm requirements
indirectly_movable(C++20) indirectly_movable_storable(C++20) indirectly_copyable(C++20) indirectly_copyable_storable(C++20) indirectly_swappable(C++20) indirectly_comparable(C++20) permutable(C++20) mergeable(C++20) sortable(C++20)
Utilities
indirect_result_t(C++20) projected(C++20) projected_value_t(C++26)
Iterator adaptors
reverse_iterator make_reverse_iterator(C++14) move_iterator(C++11) make_move_iterator(C++11) default_sentinel_tdefault_sentinel(C++20)(C++20) unreachable_sentinel_tunreachable_sentinel(C++20)(C++20) front_insert_iterator back_insert_iterator inserter insert_iterator front_inserter back_inserter move_sentinel(C++20) common_iterator(C++20) counted_iterator(C++20) basic_const_iterator(C++23) const_iterator(C++23) const_sentinel(C++23) make_const_iterator(C++23) make_const_sentinel(C++23)
Stream iterators istream_iterator ostream_iterator istreambuf_iterator ostreambuf_iterator Iterator customization points ranges::iter_move(C++20) ranges::iter_swap(C++20)
Iterator operations advance distance prev(C++11) next(C++11) ranges::advance(C++20) ranges::distance(C++20) ranges::prev(C++20) ranges::next(C++20) Range access begincbegin(C++11)(C++14) rbegincrbegin(C++14)(C++14) endcend(C++11)(C++14) rendcrend(C++14)(C++14) sizessize(C++17)(C++20) empty(C++17) data(C++17)

[edit]

Defined in header
struct default_sentinel_t {}; (1) (since C++20)
inline constexpr default_sentinel_t default_sentinel{}; (2) (since C++20)
  1. default_sentinel_t is an empty class type used to denote the end of a range. It can be used together with iterator types that know the bound of their range (e.g., std::counted_iterator).

  2. default_sentinel is a constant of type default_sentinel_t.

[edit] Example

Run this code

#include #include #include   int main() { const std::string s = "Quick brown fox.";   const std::regex words_regex("[^\s]+"); const std::ranges::subrange words( std::sregex_iterator(s.begin(), s.end(), words_regex), std::default_sentinel);   std::println("Found {} words:", std::ranges::distance(words)); for (const std::smatch& match : words) std::println("{}", match.str()); }

Output:

Found 3 words: Quick brown fox.

[edit] See also

istream_iterator input iterator that reads from std::basic_istream (class template) [edit]
istreambuf_iterator input iterator that reads from std::basic_streambuf (class template) [edit]
counted_iterator(C++20) iterator adaptor that tracks the distance to the end of the range (class template) [edit]