Interface std.range.interfaces.InputRange
These interfaces are intended to provide virtual function-based wrappers
 around input ranges with element type E.  This is useful where a well-defined
 binary interface is required, such as when a DLL function or virtual function
 needs to accept a generic range as a parameter. Note that
 isInputRange
 and friends check for conformance to structural interfaces
 not for implementation of these interface types.
						
				interface InputRange(E)
				;
						
					
				Properties
| Name | Type | Description | 
|---|---|---|
| empty[get] | bool | |
| front[get] | E | 
Methods
| Name | Description | 
|---|---|
| moveFront() | Calls moveFronton the wrapped range, if
 possible. Otherwise, throws anUnsupportedRangeMethodexception. | 
| opApply() | foreachiteration uses opApply, since one delegate call per loop
 iteration is faster than three virtual function calls. | 
| popFront() | 
Limitations
These interfaces are not capable of forwarding ref access to elements.
Infiniteness of the wrapped range is not propagated.
Length is not propagated in the case of non-random access ranges.
See Also
Example
import stdAuthors
Andrei Alexandrescu, David Simcha, and Jonathan M Davis. Credit for some of the ideas in building this module goes to Leonardo Maffi.