OK, you could also store a pointer to the InputRange as your member. With structs, assignment is making a private copy, so if you want to update the original in a stored thing you'll need the pointer. ref doesn't work with anything other than function arguments in D.