Namespaces
Variants
Views
Actions

std::ranges::dangling

From cppreference.com
< cpp‎ | ranges
Revision as of 08:24, 9 May 2019 by Fruderica (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
 
 
Ranges library
Range adaptors
 
Defined in header <ranges>
struct dangling;
(since C++20)

dangling is a placeholder type and an empty class type, used together with the template aliases ranges::safe_iterator_t and ranges::safe_subrange_t.

When some constrain algorithms that usually return an iterator or a subrange of a [[cpp/unrecognized concept/Range|Range]] take a particular rvalue Range argument that does not models exposition-only concept __ForwardingRange, dangling will be returned instead to avoid returning potentially dangling results.

Contents

Member functions

std::ranges::dangling::dangling

constexpr dangling() noexcept = default;
(1)
template<class... Args>
constexpr dangling(Args&&...) noexcept { }
(2)
1) dangling is trivially default constructible.
2) dangling can be constructed from arguments of arbitrary number and arbitrary non-void type. The construction does not have any side-effect itself.

In other words, after replacing the type (e.g. an iterator type) in the well-formed non-aggregate initialization with dangling, the resulting initialization is also well-formed.

Example

See also

obtains iterator type or subrange type of a borrowed_range
(alias template)[edit]