
Hi Sebastian, --- Sebastian Redl <sebastian.redl@getdesigned.at> wrote:
Christopher Kohlhoff wrote:
Doesn't such an approach force a particular internal implementation on the timer?
Actually, no. It's pretty easy to write a proxy object to do this stuff. A minimal object, just for the above example:
class expiry_date_proxy { deadline_timer &timer;
public: expiry_date_proxy(deadline_timer &t) : timer(t) {}
expiry_date_proxy & operator +=(timespan ts) { timer.expires_at(timer.expires_at() + ts); } };
class deadline_timer { ... expiry_date_proxy expiry_date() { return expiry_date_proxy(*this); } };
I'm not saying that this necessarily should be done (in particular, where do you stop making properties?), but it's possible.
Oh yeah, fair enough. Such a proxy approach could also be done external to the object, e.g: expiry(timer) += seconds(5); The proxy/property approach doesn't seem idiomatic C++ to me, but that's probably just my background. If resetting the expiry relative to the current expiry is a common use case perhaps it is deserving of its own member function, e.g.: timer.expires_from_current(seconds(5)); However when reworking the interface into its current form I chose a more minimalist approach. Cheers, Chris