View source code
Display the source code in std/range/primitives.d from which this page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using local clone.
R is a bidirectional range. A bidirectional
range is a forward range that also offers the primitives
popBack. The following code should compile for any bidirectional
enum isBidirectionalRange(R) = isForwardRange!R && is(typeof((R r) => r
.popBack)) && is(ReturnType!((R r) => r .back) == ElementType!R);
The semantics of a bidirectional range (not checkable during
compilation) are assumed to be the following (
r is an object of
rreturns (possibly a reference to) the last element in the range. Calling
ris allowed only if calling
rhas, or would have, returned
The header of
std for tutorials on ranges.
alias R = int; R r = [0,1]; static assert(isForwardRange!R); // is forward range r
.popBack(); // can invoke popBack auto t = r .back; // can get the back of the range auto w = r .front; static assert(is(typeof(t) == typeof(w))); // same type for front and back
Andrei Alexandrescu, David Simcha, and Jonathan M Davis. Credit for some of the ideas in building this module goes to Leonardo Maffi.
Copyright © 1999-2023 by the D Language Foundation | Page generated by ddox.