
Am 19.09.2012 18:18, schrieb Giovanni Piero Deretta:
well, if I read your discussion with Vicente correctly,you are planning to add either a bind or a get method to self to bind parameters. For simmetry the same solution should be used for the coroutine itself, especially if I get to convince you to use the same class template for both the coroutine and the self object.
by tweaking the implementation the coroutine_self type and the coroutine wouldn't need to share anything. HTH,
I'm uncertain if coroutine<> or self_t should be the first param of coroutine-fn. At least I want to implement Vicente's idea of updating the coroutine-fn parameters after each yield(). I believe your suggestion of passing a coroutine<> with 'inverted' signature will not be compatible if the coroutine-fn has more than one parameter. How would the signature of the coroutine (first parameter in fn instead of self_t) look like? maybe the first parameter is a factory? typedef coroutine< int( int, string &) > coro_t; int f( coro_t::self_t & self, int x, string & s) { coroutine< ? > coro = self.bind( x, s); // x == 3, s == "abc" coro( 7); // x == 11, s == "xyz" reutnr -1; } coro_t coro( f); int res = coro( 3, "abc"); res = coro( 11, "xyz"); I want to force the user to call bind() (memebr of some special class?) to provide the address of the parameters and return an object (coroutine<>?) used for yielding the coroutine-fn. Oliver