Joseph Rushton Wakeling:
Is it considered legit in any circumstances for popFront to take an input variable (e.g. a random number generator)? Or is it required always to have no input variables?
popFront is meant to be called by foreach, or to be verified by the isSomething compile-time tests of std.range. In both cases if popFront takes an argument, it doesn't work. So I think it's not a good idea. struct Foo { enum bool empty = false; @property int front() { return 1; } void popFront(int x) {} //void popFront() {} } void main() { import std.stdio; foreach (i; Foo()) writeln(i); } temp.d(9): Error: function temp.Foo.popFront (int x) is not callable using argument types () temp.d(9): Error: expected 1 function arguments, not 0 Bye, bearophile