If the range is not empty the first element is return else the .init value of the range element type is return The first element is returned
{ int[] a; static assert(isInputRange!(typeof(a))); assert(a.doFront is int.init); } { const a = [1, 2, 3]; assert(a.doFront is a[0]); }
Tries to do a front but it is empty it return T.init