A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://en.cppreference.com/w/cpp/language/../named_req/BidirectionalIterator.html below:

C++ named requirements: LegacyBidirectionalIterator - cppreference.com

A LegacyBidirectionalIterator is a LegacyForwardIterator that can be moved in both directions (i.e. incremented and decremented).

If a LegacyBidirectionalIterator it originates from a Container, then it's value_type is the same as the container's, so dereferencing (*it) obtains the container's value_type.

[edit] Requirements

The type It satisfies LegacyBidirectionalIterator if

And, given

The following expressions must be valid and have their specified effects:

Expression Return Equivalent expression Notes --a It& Preconditions:

Postconditions:

a-- convertible to const It& It temp = a;

--a;

return temp;
*a-- reference

A mutable LegacyBidirectionalIterator is a LegacyBidirectionalIterator that additionally satisfies the LegacyOutputIterator requirements.

[edit] Notes

The begin iterator is not decrementable and the behavior is undefined if --container.begin() is evaluated.

A bidirectional iterator does not have to be dereferenceable to be decrementable (in particular, the end iterator is not dereferenceable but is decrementable).

Concept

For the definition of std::iterator_traits, the following exposition-only concept is defined.

where the exposition-only concept __LegacyForwardIterator is described in LegacyForwardIterator.

(since C++20) [edit] Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR Applied to Behavior as published Correct behavior LWG 299
(N3066) C++98 the return type of *a-- was
required to be convertible to T changed the return
type to reference[1] LWG 383 C++98 b was required to be dereferenceable after --a a is required to be dereferenceable instead LWG 1212
(N3066) C++98 the return type of *a-- did not match the return
type of *a++ required by LegacyForwardIterator changed the return
type to reference
  1. ↑ This issue was initially resolved by N2758 (iterator concepts), which was dropped later from the C++ standard.
[edit] See also

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4