Uwagi:
is jest strumieniem liczb od 0-10.
Jak piszę tak:
IntStream is(10);
cout << "IntStream(10):" << endl;
cout << is << endl
<< "is.next(): " << is.next() << endl;
To wypisuje objekty w odpowiedniej kolejności, ale niestety indeks w strumieniu jest zwiększany o jeden. Czyli tak jakby is.next() się wykonywało, przed wypisywaniem objektu "is", ale nie wypisywało się przed wypisaniem objektu "is".
Jak piszę tak:
IntStream is(10);
cout << "IntStream(10):" << endl;
cout << is << endl;
cout << "is.next(): " << is.next() << endl;
// wywołuję cout jeszcze raz.
To wtedy działa dobrze.
Nie wiem czemu pierwszy zapis nie tak dziwnie działa.