 requirements. It must have a typedef
        <code class="computeroutput"><span class="identifier">result_type</span></code> which specifies
        the return type of its <code class="computeroutput"><span class="keyword">operator</span><span class="special">()</span></code>. This is standard practice in the STL.
        Also, it must supply a static variable called eof which is compared against
        to know whether the input has reached the end. Last but not least the function
        object must be d