template class Producer { public: explicit Producer(int seed) : seed_(seed), count_(4) {} bool Run(T& x) { // produce a new value x x = SimpleRand(seed_); count_--; return count_ >= 0; } private: int seed_; int count_; };