http://www.crystalclearsoftware.com/soc/coroutine/index.html#coroutine.intro
http://www.sgi.com/tech/stl/generate.html
이렇게 할 수 있다는 건 미처 생각 못해봤네요…
#include
using namespace std;
class Generator {
private:
int min;
int max;
int val;
public:
Generator(int minInit, int maxInit):min(minInit), max(maxInit) {
val = minInit;
}
int operator()() {
return val++;
}
operator bool() const {
return val < max;
}
};
int main()
{
Generator g(10, 20);
while (g) {
cout << g() << endl;
}
return EXIT_SUCCESS;
}
[/code]
Google Summer of Code에서 만들어졌지만 boost 안으로 들어오지는 못한 라이브러리인듯. Iterator로 만드는건 다음에 옮겨오도록 하죠. 원본의 iterator 예제가 마음에 안들어서...