T next(const Consumer< T > *const consumer)
When a Producer has multiple Consumers, each Consumer must call this overloaded version of next().
Consumer< T > * _current_consumer
The Consumer that will receive the datum returned by next().
void register_consumer(const Consumer< T > *const consumer)
Use this method to maintain state associated with a particular Consumer. The state can be used to ret...
Consumer< T > * current_consumer() const
Getter for _current_consumer.
virtual T next()=0
When a producer has a single Consumer, that Consumer may simply call this version of next() to retrie...